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
)。
可能是一樣的:http://stackoverflow.com/questions/356583/can-i-reflectively-instantiate-a-generic-type-in-java – zeller
事實上,它似乎是同樣的問題...沒有一般的回答:( –
所以你有這樣的要求,只是因爲你不喜歡壓制警告,或者你需要防彈型檢查? –