gpt4 book ai didi

java - 通用方法参数: enum which implements an interface

转载 作者:行者123 更新时间:2023-12-03 02:40:56 26 4
gpt4 key购买 nike

我有一个interface :

public interface NamedEnum {
String getName();
}

enum它实现了 interface :

public enum MyEnum implements NamedEnum {

MYVALUE1("My value one"),
MYVALUE2("My value two");

private String name;

private MyEnum(String name) {
this.name = name;
}

public String getName() {
return name;
}
}

无法编译的方法:

public static Map<Integer,String> wrong(Enum<? extends NamedEnum> value) {
Map<Integer,String> result = new LinkedHashMap<Integer, String>();
for (Enum<? extends NamedEnum> val : value.values())
result.put(val.ordinal(), val.getName());
return result;
}

两个错误:

The method values() is undefined for the type Enum<capture#1-of ? extends NamedEnum>

The method getName() is undefined for the type Enum<capture#3-of ? extends NamedEnum>

我不明白上面的方法如何接受 enum它实现了 interface .

最佳答案

定义具有交集类型的类型变量:

public static <E extends Enum<E> & NamedEnum> Map<Integer,String> wrong(E value) {

但请注意,这是传递枚举的元素,而不是枚举类本身。您可能想使用:

public static <E extends Enum<E> & NamedEnum> Map<Integer,String> wrong(Class<E> clazz) {

然后使用 clazz.getEnumConstants()获取要迭代的值:

for (E val : clazz.getEnumConstants())

或者,您可以使用value.getDeclaringClass().getEnumConstants() .

关于java - 通用方法参数: enum which implements an interface,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41284619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com