【发布时间】:2018-11-26 04:39:18
【问题描述】:
所以我在查看 ArrayLists 并且对如何将元素添加到数组而不明确说明 people.add(person1) 一遍又一遍地为每个对象感到困惑。我目前已编译此代码,但不会在控制台中打印任何内容。我认为我的错误与对象构造函数和people.add(this) 有关。我做错了什么?
import java.util.ArrayList;
public class People {
int age;
String name;
static ArrayList<People> people = new ArrayList<People>();
public People(String name, int age){
this.name = name;
this.age = age;
people.add(this);
}
People person1 = new People("Bob", 41);
People person2 = new People("Arthur", 32);
People person3 = new People("Tom",18);
public static void main(String[] args){
for(People p : people) {
System.out.println(p.name);
}
}
}
【问题讨论】:
-
在
main中初始化person1 ,2, 3 -
person1、person2、person3变量都是实例变量;它们只会在People的实例被实例化时被实例化。由于您从未在任何被调用代码中实例化People实例,因此永远不会将任何People添加到ArrayList。您需要创建变量static或将它们移动到main内的局部变量中。但是,不要将它们保留在原处,因为实例化People实例将尝试再创建三个实例——导致StackOverflowError。 -
@Slaw 他肯定会加入stackoverflow。 :)
标签: java arraylist implementation