【发布时间】:2021-04-02 23:51:35
【问题描述】:
我目前正在学习初级 Java,并且在将 ArrayList 用作构造函数中的参数时遇到问题。
当我必须在类构造函数中初始化一个ArrayList 时,我通常会这样写(为了这个例子,假设我想创建一个整数的ArrayList 作为类字段)。
public class Example {
private ArrayList<Integer> myList;
public Example(ArrayList<Integer> myInts){
this.myList = myInts;
}
}
但是,当我看到人们在教程或教科书中做同样的事情时,他们会编写以下代码:
public class Example {
private ArrayList<Integer> myList;
public Example(int myInts){
this.myList = new ArrayList<>();
addIntegers(myInts);
}
public void addIntegers(int myInts){
this.myList.add(myInts);
}
}
这两个例子有区别吗?我认为我的方法是错误的,但实际上运行这两个版本给了我相同的结果(根据我的有限理解),所以我很难掌握这两个变体的区别。
【问题讨论】:
-
在你的第二个例子中,你为什么命名一个
int参数myInts(复数)?int是单数,而不是Collection类型或数组。这令人困惑,使我无法理解您的问题。 -
您是否尝试过将
null传递给两个示例,然后尝试对ArrayList字段进行操作?第一个会抛出异常。 -
@Glains:错字。将其视为“myInt”。
-
我认为在第二个示例中,构造函数的
myInts参数也应该是ArrayList<Integer>,不是int,对吗? -
@KevinAnderson 我打错了:它实际上接受一个名为 myInt 的 int(不带 s)。
标签: java arraylist methods constructor field