見方法EnumSet參考,例如
public static <E extends Enum<E>> EnumSet<E> of(E e)
(此方法返回與給定的枚舉元素e一個元素的EnumSet)
所以一般的界限,你需要的是:<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);
參考:
謝謝你的例子,因爲荒謬的語法是 - 我正在讀爲「佔位符擴展佔位符枚舉」(與剛的「佔位符擴展超「對於非枚舉) – Roboprog 2017-10-18 22:58:46