這基本上是由於泛型擦除。在執行時,對象將只知道它是Enumeration<E>
某些類型E
- 因此它不能實際上檢查它是否是Enumeration<DefaultMutableTreeNode>
。
查看Java Generics FAQ瞭解更多信息,尤其是type erasure條目。
編輯:我不知道爲什麼第一個會成功沒有警告,第二個不是。我希望都給予警告。你真的不能總是跑不掉沒有在我的經驗@SuppressWarnings("unchecked")
- 它的價值最大限度地減少它,你可以,但它與Java泛型:(
編輯生活的一個不幸的事實:其實我從都得到一個警告這些:
import java.util.*;
import javax.swing.tree.*;
public class Test {
public static void main(String[] args) {
DefaultMutableTreeNode node = null;
Enumeration<DefaultMutableTreeNode> en1 =
(Enumeration<DefaultMutableTreeNode>)node.postorderEnumeration();
Enumeration<DefaultMutableTreeNode> en2 =
(Enumeration<DefaultMutableTreeNode>)node.pathFromAncestorEnumeration(null);
}
}
輸出:??
c:\Users\Jon\Test>javac -Xlint Test.java
Test.java:8: warning: [unchecked] unchecked cast
Enumeration<DefaultMutableTreeNode> en1 = (Enumeration<DefaultMutableTre
eNode>)node.postorderEnumeration();
^
required: Enumeration<DefaultMutableTreeNode>
found: Enumeration
Test.java:9: warning: [unchecked] unchecked cast
Enumeration<DefaultMutableTreeNode> en2 = (Enumeration<DefaultMutableTre
eNode>)node.pathFromAncestorEnumeration(null);
^
required: Enumeration<DefaultMutableTreeNode>
found: Enumeration
2 warnings
什麼返回類型的那些方法 – SLaks 2012-07-31 21:13:07
什麼是this.getRootNode() – GreenMatt 2012-07-31 21:14:38
[Both](http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/tree/DefaultMutableTreeNode.html#preorderEnumeration())返回[Enumeration](http:// docs .oracle.com/javase/1.4.2/docs/api/java/util/Enumeration.html) – ubiquibacon 2012-07-31 21:15:08