Java 为什么';以下方法是否会产生潜在的堆污染?
爪哇7 我写道:Java 为什么';以下方法是否会产生潜在的堆污染?,java,enums,Java,Enums,爪哇7 我写道: public static <E extends Enum<E>> List<SelectItem> getSelectItemList(Enum<E>... es){ List<SelectItem> items = new ArrayList<SelectItem>(); for(Enum<E> e : es){ items.add(new SelectIte
public static <E extends Enum<E>> List<SelectItem> getSelectItemList(Enum<E>... es){
List<SelectItem> items = new ArrayList<SelectItem>();
for(Enum<E> e : es){
items.add(new SelectItem(e, e.toString()));
}
return items;
}
公共静态列表getSelectItemList(枚举…es){
列表项=新建ArrayList();
用于(枚举e:es){
添加(新的SelectItem(e,e.toString());
}
退货项目;
}
这个方法编译时没有任何警告。为什么?我希望这样使用泛型类型(实际上是数组)的varargs会产生
通过varargs参数es的潜在堆污染
你能解释一下吗?不可修改类型的vararg通常是这样工作的<代码>枚举…在运行时被有效地评估为
Enum[]
。此时,您无法确定哪些引用可能会进入数组
更多信息请点击此处:
Enum
基类型实际上会给您一些类型安全性,即使在编译时也是如此,所以我想这就是为什么您是安全的。它不是一个E
数组,而是一个具有泛型E
的枚举数组。