所以對於初學者讓說,我有一個LinkedList<String>
,Java的轉換通用的LinkedList到通用陣列
我可以很容易地通過toArray()
將其轉換爲一個數組。即
LinkedList<String> strList = new LinkedList<String>();
String[] strArray = strList.toArray(new String[0]);
但可以說我有一個LinkedList<T>
然後我下面的代碼:
LinkedList<T> tList = new LinkedList<T>();
T[] strArray = tList.toArray(new T[0]);
我得到的無法創建牛逼錯誤信息的通用陣列。
我該如何解決這個問題?
特別是在我的班級中,我有LinkedList<AbstractNode<T>> nodes
,並且我試圖實現getAll()方法,該方法將所有節點作爲數組返回。
謝謝!
注意PéterTörök的回答爲我的問題提供了正確的答案,但對於我只是簡單地返回一個ArrayList而不是[]作爲Bar提到的,最終使我的代碼更加平滑。
注2我的代碼看多一點我甚至不知道任何轉換是必要的,首先,LinkedList的是罰款,我試圖做...後: -/
必須有一種不使用反射的方式,這個代碼塊中的「a」是什麼 a.getClass()。getComponentType() – 2010-09-01 12:30:40
@krmby:不,沒有這種方式。泛型是通過使用Java中的擦除來實現的,這意味着編譯時類型是未知的,所以您只能通過獲取運行時類型來「作弊」,這意味着使用反射。你可能會傳入'Class'並在'newInstance()'中使用它,但這仍然是反射。 –
2010-09-01 12:34:29
@krmby,遺憾的是沒有。請檢查更新的代碼。 – 2010-09-01 12:34:54