gpt4 book ai didi

java - 使用 List

转载 作者:行者123 更新时间:2023-12-02 07:59:50 26 4
gpt4 key购买 nike

public void findClassNodesMatching(String lowerCaseSearchText, List<? extends DefaultMutableTreeNode> foundNodes) {
findClassNodesMatching(lowerCaseSearchText, (DefaultMutableTreeNode) getRoot(), foundNodes);
}

private void findClassNodesMatching(String lowerCaseSearchText, DefaultMutableTreeNode node, List<? extends DefaultMutableTreeNode> foundNodes) {
String nodeLabel = node.toString().toLowerCase();
if (nodeLabel.indexOf(lowerCaseSearchText) >= 0) {
foundNodes.add(node);
}
}

为什么这段代码会出错

The method add(capture#2-of ? extends DefaultMutableTreeNode) in the type List is not applicable for the arguments (DefaultMutableTreeNode)

错误位于 foundNodes.add(node);

最佳答案

您可以添加到您只知道类型为 List<? extends Something> 的列表中。约束。想象一下你可以:

List<Banana> bananas = new ArrayList<Banana>();
// This is fine, right?
List<? extends Fruit> fruit = bananas;

// We don't want to be able to add an apple to a list of bananas!
fruit.add(new Apple());

// ... as otherwise this is no longer safe
Banana bananas = bananas.get(0);

这与你的情况完全相同 - 想象你传递了一些 List<SomeVerySpecificKindOfNode> ;您不应该能够添加任何 DefaultMutableTreeNode对此。

不清楚您的上下文是什么,只是将代码更改为使用 List<DefaultMutableTreeNode>在这两个地方很可能足以修复它。这取决于调用者。

关于java - 使用 List<? 时出错扩展 DefaultMutableTreeNodel>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9062330/

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