gpt4 book ai didi

Java泛型列表返回类型

转载 作者:搜寻专家 更新时间:2023-11-01 01:13:37 26 4
gpt4 key购买 nike

我在使用返回通用列表的方法时遇到了一些问题。代码基本上是这样的:

public class MyClass{
private List<MyListElement> myList = new ArrayList<MyListElement>();

public <E> List<E> getGenericList(){
return new ArrayList<E>();
}

public void thisWorks(){
List<MyListElement> newList = getGenericList();
myList.addAll(newList);
}

public void thisDoesntWork(){
myList.addAll(getGenericList());
}

public void thisDoesntWorkEither(){
for(MyListElement elem : getGenericList()){
fiddle();
}
}
}

为什么 thisDoesntWork() 方法不起作用,还有其他解决方法吗(除了用 thisWorks() 方法,这种方法并不总是有效实用)?

最佳答案

编译器无法推断为类型参数选择什么类型 <E>通用方法 getGenericList()thisDoesntWork() .

在这种情况下,您需要通过调用 <MyListElement>getGenericList() 显式声明类型参数的类型

或者,您可以更改 getGenericList() 的签名接受Class<E>争论。然后你会调用 getGenericList(MyListElement.class)在两个thisWorks()thisDoesntWork() .不可否认,这有点冗长,但对于您的方法的客户来说绝对更直观。

我会说,作为一般规则,尝试使泛型方法的类型参数可以从该方法的参数中推断出来。

关于Java泛型列表返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922370/

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