以下语句:
URLClassLoader ucl = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class<URLClassLoader> uclc = ucl.getClass();
失败并出现错误:
Type mismatch: cannot convert from Class<capture#2-of ? extends URLClassLoader> to Class<URLClassLoader>
为什么在这里需要演员表?
我发现了几篇文章,解释了为什么您不能进行反向操作(将T分配给),但这是显而易见的,并且可以理解。
注意:我在Eclipse Luna下进行编码,所以我不知道这是Luna Quirk还是泛型中我真的不了解的东西。
Class<? extends URLClassLoader>
是不变的。因此,
Class<? extends URLClassLoader>
是不是一个亚型的Class<URLClassLoader>
在Java中,变量可以保存相同类型或子类型的实例的引用。
因此,
Class<URLClassLoader> uclc = ucl.getClass();
是无效的。
另一方面,
Class<? extends URLClassLoader> uclc = ucl.getClass();
将是有效的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句