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

回到顶部