Java枚举泛型 枚举allGenres=node.children();
节点是javax.swing.tree.DefaultMutableTreeNode。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
此语句的作用是,枚举包含
该节点将被删除,但会导致警告:未经检查的转换。
我想不出消除警告的正确语法 在Java中,选中和未选中的转换是指赋值两边的泛型类型不匹配:
ClassType ct=var.method()
wherevar.method()
返回类型为ClassType
的内容,而不是ClassType
JavaAPI说node.children()
返回类型为Enumeration
的对象,而不是Enumeration
。因此,您可以强制转换方法调用:(枚举)node.children()
,如果您确实知道底层类型是什么,或者您将返回值分配给常规的枚举
(javac编译器可能仍然会抱怨)
最可能的情况是,由于底层javax代码的编写方式,您必须告诉编译器忽略这些警告
并且可能有助于理解选中和未选中的转换。在Java中,选中和未选中的转换是指赋值两边的泛型类型不匹配:
ClassType ct=var.method()
wherevar.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();