Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为无警告的枚举_Java_Generics_Enums - Fatal编程技术网

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泛型敲打我的脑袋。我有:

  • 对象
    对象对象
  • 从该对象(
    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" })