2016-02-15 4 views
1
Enumeration<DefaultMutableTreeNode> allGenres = node.children(); 

node является javax.swing.tree.DefaultMutableTreeNode.
Это заявление работает, поскольку перечисление содержит все дочерние элементы
узла, но вызывает предупреждение: непроверенное преобразование.
Я не могу понять правильный синтаксис, чтобы устранить предупреждение.Перечисление Java Generic

+0

'Enumeration allGenres = node.children();'? – helt

ответ

0

В Java, проверены и бесконтрольно конверсий, когда общие типы не совпадают с обеих сторон задания: ClassType<T> ct = var.method(); где var.method() возвращает что-то типа ClassType вместо ClassType<T>.

API Java говорит, что node.children() возвращает объект типа Enumeration, а не Enumeration<WhateverTreeNode>. Таким образом, вы можете отправить вызов метода: (Enumeration<WhateverTreeNode>)node.children(), если вы точно знаете, что такое базовый тип, или присваиваете возвращаемое значение регулярному Enumeration (который компилятор javac, вероятно, будет жаловаться).

Скорее всего, вам придется сообщить компилятору игнорировать эти предупреждения из-за того, как написанный код javax написан.

This related question и the Oracle Java Tutorial on Raw Types могут помочь вам разобрать проверенные и непроверенные конверсии.

+0

Другое наблюдение: дети «DefaultMutableTreeNode» имеют тип «MutableTreeNode», а не _ обязательно · 'DefaultMutableTreeNode' (хотя OP, возможно, полностью реализован с использованием' DefaultMutableTreeNode'). –

Смежные вопросы