gpt4 book ai didi

java - 为什么 addNode() 方法返回编译错误 "The method...in type...is not applicable for the arguments...",以及如何修复它?

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:08 25 4
gpt4 key购买 nike

我正在尝试编写三叉树的通用实现,该树的 addNode 方法调用父节点的 setLeft、setMiddle 和 setRight 方法,其定义如下:

public void setLeft(T item)
{
left = new TernaryTreeNode<T>(item);
}

在addNode方法中调用如下:

currentNode.setLeft(currentNode = new TernaryTreeNode<T>(data));

我没有包含完整的代码,因为如果我这样做,它不会让我发布问题,而 addNode 方法中的那一行就是错误所在。 VSC 告诉我,如果我使用 TernaryTreeNode 作为参数,则无法使用子 setter 方法,但这是为什么呢?我该如何修复它?

最佳答案

你的方法setLeft , setMiddlesetRight获取 T 类型的对象正如你所说,作为论据。然而,您正试图通过 TernaryTreeNode<T>作为论证。您可能必须创建采用 TernaryTreeNode<T> 的方法。作为参数,或传递对象 T作为参数包含在节点中。根据您提供的信息,很难确定哪一个是正确的,但其中之一很可能是错误的方法。两者是否都错更难判断。 ;)

currentNode.setLeft(currentNode = new TernaryTreeNode<T>(data));

上面的行传递了 TernaryTreeNode<T>对象而不是 T对象。

作为更切题的比较,您想要做的事情类似于:

您定义:

public void thisMethodTakesT(T item) { ...

但是你打电话:

thisMethodTakesT(new ArrayList<T>()); // This will produce a compile time exception.

thisMethodTakesT不接受列表,它接受 T 类型的一项,不是 T 的列表s。同样你的setLeft (和其他人)拿T而不是TernaryTreeNode<T> .

关于java - 为什么 addNode() 方法返回编译错误 "The method...in type...is not applicable for the arguments...",以及如何修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60537296/

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