gpt4 book ai didi

java - 返回泛型对象的 Arraylist 错误

转载 作者:行者123 更新时间:2023-12-02 04:42:19 24 4
gpt4 key购买 nike

我有下一个通用对象:

public class A<T> {
T a;
.......
}

下一个界面:

public interface SearchA{
........
public ArrayList<A> getChildren(A a);
}

我尝试在类中实现这个接口(interface):

public class AGraph implements SearchA{
......
public ArrayList<A> getChildren (A s)
{
.......
ArrayList<A<String>> list= new ArrayList();
....
return list;
}
}

在此实现中,当我尝试返回 list 时遇到错误,因为它的类型是 ArrayList<A<String>>而不是ArrayList<A> 。我需要使接口(interface) ASearch 通用吗? (将 <T> 添加到类 header )?或者我还有其他选择?

谢谢。

最佳答案

接口(interface) SearchA 中的方法返回ArrayList其中包含 A 的原始版本,但在实际方法的实现中,您返回 ArrayList其中包含 A 的通用版本。

因此,它们不同且不兼容。

快速修复:

public interface SearchA {
public List<A<String>> getChildren(A a);
}

public class AGraph implements SearchA {
@Override
public List<A<String>> getChildren(A a) {
List<A<String>> arrayList = new ArrayList<>();
return arrayList;
}
}

旁注:

  1. 这种情况下最好使用new ArrayList<>()不是new ArrayList()因为后一个选项将是未经检查的分配。

  2. 最好使用 List而不是ArrayList在方法的返回类型以及声明引用变量时。

关于java - 返回泛型对象的 Arraylist 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56509257/

24 4 0