有关参考,请参阅 EnumSet 中的方法,例如
public static <E extends Enum<E>> EnumSet<E> of(E e)
(此方法返回一个枚举集,其中包含给定枚举元素 e 中的一个元素)
因此,您需要的通用边界是:<E extends Enum<E>>
实际上,您可能会使自己变得通用:Bar
public class Bar<E extends Enum<E>> {
private final E item;
public E getItem(){
return item;
}
public Bar(final E item){
this.item = item;
}
}
您也可以添加一个工厂方法,如 等。from
with
public static <E2 extends Enum<E2>> Bar<E2> with(E2 item){
return new Bar<E2>(item);
}
这样,在客户端代码中,您只需编写一次通用签名:
// e.g. this simple version
Bar<MyEnum> bar = Bar.with(MyEnum.SOME_INSTANCE);
// instead of the more verbose version:
Bar<MyEnum> bar = new Bar<MyEnum>(MyEnum.SOME_INSTANCE);
参考: