我编写了一个可以传递所有字段的构造函数,包括一个Arraylist。如果我想要构造函数,我不会传递Arraylist而是给它一个空的Arraylist,我不知道该怎么办。
例如我已经写了一个课程课程,现在我正在写一个学生课程。学生班包含一个Arraylist。
class Student {
String studentFirstName;
String studentLastName;
ArrayList<Course> studentSchedule = new ArrayList<Course>();
// Constructors
Student(String newFirstName, String newLastName) {
this.Student(newFirstName, newLastName, _______ ); //what to put in the blank?
}
Student(String newFirstName, String newLastName, ArrayList<Course> newSchedule) {
this.studentFirstName = newFirstName;
this.studentLastName = newLastName;
this.studentSchedule = newSchedule;
}
.
.
.
我被困在这里。将null放在空白处不起作用,我得到编译器警告:方法Student(String,String,null)未定义类型Student显然我错过了这一点。
如何让构造函数给我一个空的Arraylist?
答案 0 :(得分:2)
好吧,你想要传递一个空的ArrayList,所以传递一个空的ArrayList:
class Student {
String studentFirstName;
String studentLastName;
List<Course> studentSchedule; // no initialization here: it's done in the constructor
// Constructors
Student(String newFirstName, String newLastName) {
this(newFirstName, newLastName, new ArrayList<Course>());
}
Student(String newFirstName, String newLastName, List<Course> newSchedule) {
this.studentFirstName = newFirstName;
this.studentLastName = newLastName;
this.studentSchedule = newSchedule;
}
请注意,您通常应该将字段声明为List<Course>
,而不是ArrayList<Course>
,除非列表是ArrayList非常重要,而不是任何其他类型的列表。接口程序。
此外,您的字段应该是私有的,不应该命名为studentXxx。他们是Student课程的一部分,所以这是多余的。 lastName
已经足够,而且更加容易。
答案 1 :(得分:0)
传递空ArrayList
:
this(newFirstName, newLastName, new ArrayList<Course>());
(另请注意,正确的语法为this.
,而非this.Student.
)
答案 2 :(得分:0)
如果我弄错了,可能会传递Arraylist
的新空实例
this (newFirstName, newLastName, new ArrayList<Course>())
或者,您也可以传递null
,
this (newFirstName, newLastName, null)
修改:
在@Erwin的评论之后,要调用同一个类的构造函数,你应该只使用this()
。
答案 3 :(得分:0)
只需构造一个空ArrayList
并将其传递给构造函数:
Student(String newFirstName, String newLastName) {
this(newFirstName, newLastName, new ArrayList<>());
}
另请注意,我已使用this()
来调用Student
的其他构造函数,而不是this.Student()
无效。
但请注意,您已在声明点初始化ArrayList
字段。如果您希望通过构造函数进行初始化,则应考虑删除此初始化。