我有一个创建新对象Student的方法,并将其添加到数组列表studentRegister:
public void addStudent(String name, String age)
{
studentRegister.add(new Student(name, age));
}
它在这里调用Student类构造函数:
public Student(String name, String age)
{
this.name = name;
this.age = age;
}
这有效,但它对可维护性有害,因为我必须更改Student类和addStudent方法中的任何其他参数。如何在addStudent阶段输入参数而不在addStudent方法中对它们进行编码?
答案 0 :(得分:6)
这样做:
public void addStudent(Student s)
{
studentRegister.add(s);
}
在构造函数/其他方法中,您可以调用上面的方法:
public Student(String name, String age)
{
this.name = name;
this.age = age;
addStudent(this); //here is the call to the above method
}
答案 1 :(得分:4)
你应该传递一个学生对象 - 而不是两个值。
public void addStudent(Student student)
{
studentRegister.add(student);
}
答案 2 :(得分:0)
使用
public void addStudent(final Student student) {
studentRegister.add(student);
}
是更好的方法。
也许您正在寻找一种更简单的方法来构建对象。例如使用连锁二传手:
public class Student {
private String name;
private String age;
private String address;
public String getName() {
return name;
}
public Student setName(String name) {
this.name = name;
return this;
}
public String getAge() {
return age;
}
public Student setAge(String age) {
this.age = age;
return this;
}
public String getAddress() {
return address;
}
public Student setAddress(String address) {
this.address = address;
return this;
}
}
那么,那么:
Student student = new Student().setName("User")
.setAge("30")
.setAddress("New York");
使用普通setter构建对象的另一种方法:
Student student = new Student(){{
setName("User");
setAge("30");
setAddress("30");
}};