Java枚举泛型 枚举allGenres=node.children();

Java枚举泛型 枚举allGenres=node.children();,java,generics,Java,Generics,节点是javax.swing.tree.DefaultMutableTreeNode。 此语句的作用是,枚举包含 该节点将被删除,但会导致警告:未经检查的转换。 我想不出消除警告的正确语法 在Java中,选中和未选中的转换是指赋值两边的泛型类型不匹配:ClassType ct=var.method()wherevar.method()返回类型为ClassType的内容,而不是ClassType JavaAPI说node.children()返回类型为Enumeration的对象,而不是Enume

节点是javax.swing.tree.DefaultMutableTreeNode。
此语句的作用是,枚举包含
该节点将被删除,但会导致警告:未经检查的转换。

我想不出消除警告的正确语法

在Java中,选中和未选中的转换是指赋值两边的泛型类型不匹配:
ClassType ct=var.method()
where
var.method()
返回类型为
ClassType
的内容,而不是
ClassType

JavaAPI说
node.children()
返回类型为
Enumeration
的对象,而不是
Enumeration
。因此,您可以强制转换方法调用:
(枚举)node.children()
,如果您确实知道底层类型是什么,或者您将返回值分配给常规的
枚举
(javac编译器可能仍然会抱怨)

最可能的情况是,由于底层javax代码的编写方式,您必须告诉编译器忽略这些警告


并且可能有助于理解选中和未选中的转换。

在Java中,选中和未选中的转换是指赋值两边的泛型类型不匹配:
ClassType ct=var.method()
where
var.method()
返回类型为
ClassType
的内容,而不是
ClassType

JavaAPI说
node.children()
返回类型为
Enumeration
的对象,而不是
Enumeration
。因此,您可以强制转换方法调用:
(枚举)node.children()
,如果您确实知道底层类型是什么,或者您将返回值分配给常规的
枚举
(javac编译器可能仍然会抱怨)

最可能的情况是,由于底层javax代码的编写方式,您必须告诉编译器忽略这些警告


并可能帮助您理解已检查和未检查的转换。

Enumeration allGenres=node.children()
枚举allGenres=node.children()
?另一个观察结果是:
DefaultMutableTreeNode
的子级属于
MutableTreeNode
类型,不一定是
DefaultMutableTreeNode
(尽管OP可能完全使用
DefaultMutableTreeNode
实现)。另一个观察结果是:
DefaultMutableTreeNode
的子项属于
MutableTreeNode
,不一定是
DefaultMutableTreeNode
(尽管OP可能完全使用
DefaultMutableTreeNode
)类型。
Enumeration<DefaultMutableTreeNode> allGenres  = node.children();