【发布时间】:2012-09-14 09:40:36
【问题描述】:
Class<List>、Class<List<?>> 或 Class<List<Anything> 实际上指的是同一个Class。
如果我有
class MyClass implements List<SomeClass> {
// ...
}
然后我就可以写了
Class<? extends List<SomeClass>> myClass = MyClass.class;
这样我就可以写了
List<SomeClass> myInstance = myClass.newInstance();
诀窍是我想通过反射使用ClassLoader.loadClass 加载这个类,并且仍然用相同的类型声明myClass。正确/最简单的方法是什么?
我想要一个不会引发编译警告并且不需要@SuppressWarnings 的解决方案(这可能意味着对超级类型进行运行时检查,例如更强大的Class.asSubclass 版本)。
【问题讨论】:
-
确实这似乎是同一个问题......并且没有一个一般的答案:(
-
所以你有这种要求只是因为你不喜欢抑制警告,或者你需要防弹类型检查?
-
出现警告是有原因的(这里需要未经检查的强制转换),所以我的问题是如何抑制它们(这在逻辑上需要运行时检查)
标签: java reflection