2012-02-14 55 views
3

我使用的是JTree,我使用Enumerator遍歷樹。Swing,JTree遍歷,枚舉器警告

TreeModel columnTreeModel = columnTree.getModel(); 
TreeNode columnTreeRoot = (TreeNode) columnTreeModel.getRoot(); 
Enumeration<TreeNode> columnTreeEnumerator = 
    ((DefaultMutableTreeNode) columnTreeRoot).breadthFirstEnumeration(); 

我在此代碼的第三行中收到警告。警告是

 
The expression of type Enumeration needs unchecked conversion 
    to conform to Enumeration 

如何解決此警告?

回答

6

DefaultMutableTreeNode自從Java 1.2以來存在,自Java 1.5以來就存在Java泛型。這就是爲什麼方法breadthFirstEnumeration的結果沒有類型參數的原因,它是一個「原始」枚舉。 TreeModel也一樣。你可以寫一個參數化的TreeModel,它返回一個類型化的根節點,所以你不需要投射。但在Swing設計的時候,這是不可能的。

如果不更改類型(例如,子類),則無法「解析」此警告。只需設置一個@SuppressWarnings("unchecked")註釋(並記錄爲什麼你這樣做),那麼警告就會消失。

+1

有一個例子[here](http://stackoverflow.com/a/8210759/230513)。 – trashgod 2012-02-14 10:34:56

+0

完美。謝謝 :) – Achilles 2012-02-14 11:44:38

相關問題