当其中一个参数是TBD时,如何初始化Object

时间:2015-02-19 19:26:28

标签: java class object

这与Java作业分配有关。

我写了一个用于创建课程对象实例的课程,每门课程都有参数,如课程名称,最大学生人数和房间号码。然而,对于某些课程,房间不得而知。有没有办法初始化和没有房间号的课程对象?

public class ITECCourse {

private String name;
private int code;
private ArrayList<String> students;
private int maxStudents;
private int room = 0;

。 。

//Constructor

public ITECCourse(String courseName, int courseCode, int courseMaxStudents, int room) {
    this.name = courseName;
    this.code = courseCode;
    this.students = new ArrayList<String>();
    this.maxStudents = courseMaxStudents;
    this.room = room;

3 个答案:

答案 0 :(得分:2)

您有几个选择:

  1. 您可以创建第二个不带房号的构造函数:

    public ITECCourse(String courseName, int courseCode, int courseMaxStudents)
    
  2. 您可以将空间和int更改为整数。这将允许空值。

  3. 无论哪种方式,您都希望添加方法setRoomNumber()以允许用户稍后提供该值。

答案 1 :(得分:0)

添加第二个不接受(或设置)房间号的构造函数。

答案 2 :(得分:0)

是的,您可以重载构造函数。除了上面的构造函数,您可以在类中添加一个新的构造函数:

public ITECCourse(String courseName, int courseCode, int courseMaxStudents) {
    this(courseName, courseCode, courseMaxStudents, 0);
}

这将允许您在尚未设置的情况下不将房间默认设置为某个值。

这样做的另一个好处是,通过调用另一个已经存在的构造函数,你不会遇到在任何地方重复代码的问题(设置所有值)。

有关最佳做法的详细信息,请参阅this问题