我有一个非常简单的案例,我做了一些基本的通用分配:
final Detail detail = field.getAnnotation(Detail.class);
final String example = detail.example();
final Class<?> type = field.getType();
if (List.class.isAssignableFrom(type))
...
else if (Enum.class.isAssignableFrom(type))
setValue(contract, field, Enum.valueOf(type, example));
else if (...)
.....
but the Enum.valueOf() http://download.oracle.com/javase/6/docs/api/java/lang/Enum.html#valueOf%28java.lang.Class,%20java.lang.String%29调用起来有点困难,就我而言,错误是:
java.lang.Enum 中的 valueOf(java.lang.Class,java.lang.String) 不能应用于 (java.lang.Class,java.lang.String)
这是完全有道理的,因为类型是Class<Object>
。但是由于Enum
是CRTP,我找不到一个好的方法来转换类型以使编译器满意。正在使用原始类型Enum.valueOf((Class)type, example))
唯一的答案是什么?它给了我 2 条警告,而不是 1 条。
下面一行将仅发出一个警告:
...
setValue( contract, field, Enum.valueOf( type.asSubclass( Enum.class ), example ) );
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)