gpt4 book ai didi

java - 对象和抽象的ArrayList

转载 作者:行者123 更新时间:2023-12-01 18:12:21 26 4
gpt4 key购买 nike

我正在尝试学习 Java 中的通配符。在这里,我尝试修改 printCollection 方法,以便它只采用扩展 AbstractList 的类。它显示评论中的错误。我尝试使用对象的ArrayList,它工作得很好。我正在使用 Java 7。

import java.util.AbstractList;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Set;

public class Subtype {
void printCollection(Collection<? extends AbstractList<?>> c) {
for (Object e : c) {
System.out.println(e);
}
}

public static void main(String[] args) {
Subtype st= new Subtype();
ArrayList<String> al = new ArrayList<String>();
al.add("a");
al.add("n");
al.add("c");
al.add("f");
al.add("y");
al.add("w");
//The method printCollection(Collection<? extends AbstractList<?>>) in the type Subtype is not applicable for the
// arguments (ArrayList<String>)
st.printCollection(al);
}

}

最佳答案

您正在请求 AbstractList 对象的集合,例如填充有 AbstractList 的列表。这真的是你想要的吗?

解决这个问题的一种方法是......

<T extends AbstractList<?>> void printCollection(T c) {

...这样,您的方法将只接受使用任何通用内容扩展 AbstractList 的对象。

但正如其他评论者、海报和作家(J. Bloch:Effective Jave,p134+)已经正确指出的那样,更好的风格只是尝试这样的事情:

void printCollection(AbstractList<?> c) {

关于java - 对象和抽象的ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32032165/

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