Swing, JTree Traversing, Предупреждения счетчика - PullRequest
3 голосов
/ 14 февраля 2012

Я использую JTree, и я обхожу дерево, используя Enumerator.

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

Я получаю предупреждение в 3-й строке этого кода. Предупреждение

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

Как мне восстановить это предупреждение?

1 Ответ

6 голосов
/ 14 февраля 2012

DefaultMutableTreeNode существует с Java 1.2, Java Generics существует с 1.5. Вот почему результат метода breadthFirstEnumeration не имеет параметра типа, это «сырое» перечисление. То же самое для TreeModel. Вы можете написать параметризованный TreeModel, который возвращает типизированный корневой узел, так что вам не нужно будет приводить. Но это было просто невозможно во время разработки Swing.

Вы не можете "разрешить" это предупреждение без изменения типа (например, создание подклассов). Просто установите аннотацию @SuppressWarnings("unchecked") (и задокументируйте, почему вы это делаете), и предупреждение исчезнет.

...