0
我有一個類EnumSet<E extends Enum<E>>
,它有一個方法public void include(E e)
需要一個枚舉常量,並將其放入一個列表中,表示一組給定的枚舉。鑄造到java中的通用參數
現在我想通過反射從xml文件加載EnumSets,以便我可以迭代ove rall enum常量並將它們包含在加載的集合中。
Object[] enum_const = Class.forName(cur.getAttributeValue("type")).getEnumConstants();
field.set(obj, Class.forName(cur.getAttributeValue("type")).newInstance());
for (Object o : enum_const) {
if (o.toString().equalsIgnoreCase(cur.getText())) {
((EnumSet<?>) field.get(obj)).include((E) o);
// Include each matching EnumConstant..
}
}
最後投是不可能的,因爲E是不是在這方面進行訪問。有沒有人有這個問題的解決方案?
只需刪除cast。模板參數被原始類型中的對象替換。 – talex 2014-12-05 15:18:11
你有沒有試過[EnumSet.allOf](https://docs.oracle.com/javase/7/docs/api/java/util/EnumSet.html#allOf%28java.lang.Class%29)? – OldCurmudgeon 2014-12-05 15:32:16
也許你可以使用[typetools](http://search.maven.org/#artifactdetails%7Cnet.jodah%7Ctypetools%7C0.3.1%7Cjar)庫來訪問它們。 – bhdrkn 2014-12-05 15:39:00