如何在不在构造函数中传递参数的情况下创建对象的实例?

时间:2015-07-08 05:56:58

标签: java constructor instance

我有一个Student类,它有构造函数Student(int id, string name)

现在,我想在不触及构造函数的情况下创建Student Class的对象。我该怎么办?

Student std = new Student();

不是Student std = new Student(1, "Benjamin");

6 个答案:

答案 0 :(得分:2)

创建default constructor,例如

Student();

在Java中,默认构造函数是指如果没有为类定义构造函数,则由编译器自动生成的nullary constructor。默认构造函数隐式调用超类的nullary构造函数,然后执行一个空体。此外,您可以自己编写。

请注意,根据您的编码设计和要求,可以有许多构造函数。说,

class Student {  

    // default constructor
    public Student() {}

    // one param constructor
    public Student(int id) {
        this.id = id;
    }

    // two param constructor
    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

如果你有默认的构造函数,那么没有

Student std = new Student(1, "Benjamin");

您可以创建一个std对象,如:

Student std = new Student();

答案 1 :(得分:1)

您必须创建无参数构造函数 - Student()。如果您没有Student(int id, string name)构造函数,编译器将自动创建一个空的无参数构造函数。

答案 2 :(得分:0)

你应该在你的类中创建第二个没有参数的构造函数(所谓的"默认构造函数"):

class Student {
    int id;
    String name;

    // new constructor
    public Student() {
    }

    // old constructor: we don't change it.
    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }
}

答案 3 :(得分:0)

您必须添加不带参数的构造函数。

请注意,这只是出于学术目的的解决方案:如果您不想创建没有参数的新构造函数,则还有另一种可能性。使用参数删除构造函数,如果自动执行此操作,则会将不带参数的默认构造函数添加到类中。显然,如果你这样做,你必须改变现有的代码,用不带参数的新调用替换旧的调用参数化构造函数!

答案 4 :(得分:0)

你可以这样做;如果你的类有默认的空构造函数和setter方法:

Student st = new Student();
st.setId(1);
.
..

答案 5 :(得分:0)

我有一个同样的问题,尽管事情是应该自动实现的默认构造函数应该允许对象不带参数。错误状态:无法解析构造函数。 :(

User user = new User();
user.setUsername(registerRequest.getUsername());
user.setPassword(registerRequest.getPassword());
user.setEmail(registerRequest.getEmail());

所以User();要求参数,并且我无法对用户应用所有其他代码行