Java如何用泛型实现枚举?
我有一个像这样的通用接口:
interface A<T> { T getValue();
}
此接口具有有限的实例,因此最好将它们实现为枚举值。问题是那些实例具有不同类型的值,因此我尝试了以下方法,但无法编译:
public enum B implements A { A1<String> {
@Override
public String getValue() {
return "value";
}
},
A2<Integer> {
@Override
public Integer getValue() {
return 0;
}
};
}
有什么想法吗?
回答:
你不能 Java不允许在枚举常量上使用泛型类型。但是,它们允许用于枚举类型:
public enum B implements A<String> { A1, A2;
}
在这种情况下,你可以做的是为每个泛型类型都拥有一个枚举类型,或者通过将其设为一个类来“伪造”一个枚举:
public class B<T> implements A<T> { public static final B<String> A1 = new B<String>();
public static final B<Integer> A2 = new B<Integer>();
private B() {};
}
不幸的是,它们都有缺点。
以上是 Java如何用泛型实现枚举? 的全部内容, 来源链接: utcz.com/qa/436229.html