Collection<String> a = new ArrayList<String>();a.add("Hello");a.add("World");System.out.println(a.get(0));谁能解释为什么我不能使用在 ArrayList 类中预定义的 get() 方法?
3 回答

叮当猫咪
TA贡献1776条经验 获得超12个赞
为什么我不能使用在 ArrayList 类中预定义的 get() 方法?
在 Java 中,引用变量类型决定了您可以对对象调用哪些方法。
由于您的引用变量类型是Collection
您要为其分配ArrayList
对象的类型,因此您只能调用由Collection
指定类型声明的方法(在此处查看 API)。
简单来说,get()
是由 定义的ArrayList
,而不是由Collection
接口定义的。
现在,如果要调用该get()
方法,则需要将引用类型从Collection
更改List
为 ,如下所示:
List<String> a = new ArrayList<>();//No need to specify type for ArrayList
你可以在这里查看List
接口声明的所有方法,并且是方法之一。get(int i)

慕桂英4014372
TA贡献1871条经验 获得超13个赞
Collection接口没有get()方法。List接口有get()方法。
List<String> a = new ArrayList<String>();
a.add("Hello");
a.add("World");
System.out.println(a.get(0));
现在它会正常工作。

森栏
TA贡献1810条经验 获得超5个赞
试试这个,
打印集合中的第一项:
System.out.printf(a.iterator().next());
对于 java8 :
System.out.println(a.stream().findFirst().orElse("not found"));
添加回答
举报
0/150
提交
取消