Java 将字符串转换为无警告的枚举
我正在使用反射编写某种类型的反序列化程序,并且正在用Java泛型敲打我的脑袋。我有:Java 将字符串转换为无警告的枚举,java,generics,enums,Java,Generics,Enums,我正在使用反射编写某种类型的反序列化程序,并且正在用Java泛型敲打我的脑袋。我有: 对象对象对象 从该对象(java.lang.reflect.field)引用一个字段,该字段用于枚举(field.getType().isEnum()返回true) 该枚举的字符串表示形式(string) 我可以将字符串解析为枚举,并使用以下代码在对象中设置它: Class<Enum> enumClass = (Class<Enum>) field.getType(); field.
- 对象
对象对象
- 从该对象(
)引用一个字段,该字段用于枚举(java.lang.reflect.field
返回field.getType().isEnum()
)true
- 该枚举的字符串表示形式(
)string
Class<Enum> enumClass = (Class<Enum>) field.getType();
field.set(object, Enum.valueOf(enumClass, string));
Class enumClass=(Class)field.getType();
field.set(object,Enum.valueOf(enumClass,string));
但是,这会生成编译警告,因为枚举是泛型类型
如果添加泛型(Enum
),则会在Enum.valueOf调用中出现编译错误)
有没有一种方法可以在没有泛型警告的情况下获得相同的结果(或者以“更好”的方式编写)
有没有一种方法可以在没有泛型警告的情况下获得相同的结果(或者以“更好”的方式编写)
不会。因为您没有告诉编译器所涉及的类型是什么,因为使用了原始类型,所以它无法确定在运行时会发生什么,因此必须警告您
您所能做的就是抑制警告
@SuppressWarnings({ "unchecked", "rawtypes" })