簡體   English   中英

Java如何將加載的類參數類型作為泛型參數傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM