gpt4 book ai didi

java - List 未经检查的转换警告

转载 作者:行者123 更新时间:2023-12-02 11:03:28 24 4
gpt4 key购买 nike

当我使用 -Xlint:unchecked 编译 java 代码时,在这一行中:

            List<HierarchyNode> list = hier.getHierarchyNodesParentFirst(0);

我收到这个:

... unchecked conversion
required: java.util.List<ir.ac.ut.iis.person.hierarchy.HierarchyNode>
found: java.util.List

getHierarchyNodesParentFirst 定义为:

public class Hierarchy<U extends User> {
...
public List<HierarchyNode> getHierarchyNodesParentFirst(int owner) {
List<HierarchyNode> hierarchyNodesChildFirst = getHierarchyNodesChildFirst(owner);
...
return hierarchyNodesChildFirst;
}
}

它不会在任何地方被覆盖,也不会覆盖任何东西。可能是什么问题?

最佳答案

在评论中您声明您已定义变量 hierHierachy hier = new Hierarchy<>(); 一样。这会导致未经检查的警告,因为您在变量声明中遗漏了类型变量。该警告不是由 List 之间的无效转换引起的。和List<HierarchyNode>正如人们最初通过阅读编译器警告所想到的那样。

以下示例应该可以解决问题:

Hierarchy<? extends User> hier = new Hierarchy<>();
List<HierarchyNode> list = hier.getHierarchyNodesParentFirst(0);

或者(这可能不是有意的)

Hierarchy hier = new Hierarchy<>();
List list = hier.getHierachyNodesParentFirst(0);

编辑:您还可以删除通用参数 <U extends User>来自类(class)Hierarchy 。显然这可能不是您想要的,但它强调由于没有类型,因此不会发生类型删除,并且代码将在没有警告的情况下编译。

这是由类型删除引起的。 There's some discussion in StackOverflow .

关于java - List 未经检查的转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51155232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com