[英]Java how to pass a loaded class parameter type as a generic argument?
我想動態加載一個java類,然后在ObservableList<myLoadedClass>
添加用這個類創建的對象。
Class<?> thisClass = Class.forName("Point", true, classLoader);
Object iClass = thisClass.newInstance();
...
ObservableList<thisClass> data = FXCollections.observableArrayList();
最后一行導致錯誤
找不到符號:class thisClass ...
謝謝您的幫助。
你不知道是什么類型thisClass
在編譯時-這是什么通配符:
ObservableList<?> data = FXCollections.observableArrayList();
好的通配符然后......
Class<?> thisClass = Class.forName("Point", true, classLoader);
Object iClass = thisClass.newInstance();
...
ObservableList<?> data = FXCollections.observableArrayList();
data.addAll(iClass);
最后一行原因:沒有為addAll(Object)找到合適的方法。
有任何想法嗎?
五分鍾(或多一點;-)分鍾后......
“對象”取代了通配符,而不是通配符。 靈感來自這個線程 ,他們解釋說:“所以未知類型的集合不是可以采用任何類型的集合。它只需要未知類型。而且因為我們不知道那種類型(它未知;)),我們可以永遠不要添加值,因為java中沒有類型是未知類型的子類。“
那么,就目前而言,我的解決方案是:
Class<?> thisClass = Class.forName("Point", true, classLoader);
Object iClass = thisClass.newInstance();
...
ObservableList<Object> data = FXCollections.observableArrayList();
data.addAll(iClass);
// Sample Point class method
Method getXMethod = thisClass.getDeclaredMethod("getX");
System.out.println(getXMethod.invoke(data.get(0)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.