Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 - Fatal编程技术网

Java 实例化泛型类型时出现警告

Java 实例化泛型类型时出现警告,java,generics,Java,Generics,我有一个用于实例化泛型类型的代码片段,如下所示: public class GenericMessageMapper<I ,X> { public X xFromI(I imf) { // do thing by imf argument Class<X> clazz = (Class<X>)((ParameterizedType) this.getCla

我有一个用于实例化泛型类型的代码片段,如下所示:

public class GenericMessageMapper<I ,X>
{
   public X xFromI(I imf)
   {
      // do thing by imf argument
      Class<X> clazz = (Class<X>)((ParameterizedType)
                                   this.getClass()
                                       .getGenericSuperclass())
                                       .getActualTypeArguments()[1];
      X x = clazz.newInstance(); 
   }
}

出现此警告的原因是什么?解决方案是什么?

这只意味着类的类型只有在运行时才知道,因此可能会出现这样的情况:您认为应该得到类型为X的类,但实际上它是其他类型的类(由于X可以是任何类型,所以在编译时它不知道)


基本上,您可以忽略此警告。

这只意味着类的类型只有在运行时才知道,因此可能会出现这样的情况:您认为应该得到类型为X的类,但实际上它是其他类型的类(因为X可以是任何类型,所以在编译时它不知道)


基本上你可以忽略这个警告。

警告就是这样。警告。有时警告无关紧要,有时则不然。它们用于提醒您注意编译器认为可能有问题但可能没有的东西

在cast的情况下,它总是会在这种情况下发出警告。如果你绝对确信一个特定的演员是安全的,那么你应该考虑在这行之前添加一个这样的注释:

@SuppressWarnings (value="unchecked")

参见

警告就是这样。警告。有时警告无关紧要,有时则不然。它们用于提醒您注意编译器认为可能有问题但可能没有的东西

在cast的情况下,它总是会在这种情况下发出警告。如果你绝对确信一个特定的演员是安全的,那么你应该考虑在这行之前添加一个这样的注释:

@SuppressWarnings (value="unchecked")
reference

是正确的-在通常情况下,如果出现此警告,您应该在强制转换之前执行实例检查(
instanceof
)。但在您的例子中,这是不可能的,因为Java中的泛型是通过擦除实现的<代码>类不是具体化类型,因此无法将其用于实例检查,关闭警告的唯一方法是使用
@SuppressWarnings(value=“unchecked”)
。 若要了解有关泛型的更多信息,可以使用本书。

是正确的-在通常情况下,在出现此警告的情况下,应在强制转换之前执行实例检查(
instanceof
)。但在您的例子中,这是不可能的,因为Java中的泛型是通过擦除实现的<代码>类不是具体化类型,因此无法将其用于实例检查,关闭警告的唯一方法是使用
@SuppressWarnings(value=“unchecked”)
。 要了解有关泛型的更多信息,可以使用本书