当我遇到这个时,我正在练习圆顶Java OO原则.我创建到POJO,当尝试从它创建对象时,如果没有定义空构造函数,它将不会编译.
我发现这很奇怪,因为我曾经这样做,而JVM包含了一个默认的.它是Java 7中的新功能吗?我错过了什么吗?
这是我制作的示例代码
public class Dog {
String name;
String race;
int age;
/*
public Dog() {
If this isn't included, it doesn't compile if I try to
create no-args objects.
}*/
public Dog (String _name) {
this.name = _name;
}
public Dog (String _name, String _race) {
this.name = _name;
this.race = _race;
}
public Dog (String _name, String _race, int _age) {
this.name = _name;
this.race = _race;
this.age = _age;
}
Run Code Online (Sandbox Code Playgroud)
}
ski*_*iwi 12
使用Dog newDog = new Dog();在当前代码中不起作用,因为您尚未定义它.
如果没有其他构造函数,则只会自动生成默认构造函数.
您不必为您的类提供任何构造函数,但在执行此操作时必须小心.编译器自动为没有构造函数的任何类提供无参数的默认构造函数.此默认构造函数将调用超类的无参数构造函数.在这种情况下,如果超类没有无参数构造函数,编译器将会抱怨,因此您必须验证它是否存在.如果你的类没有显式的超类,那么它有一个隐式的超类Object,它有一个无参数的构造函数.
资料来源:http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html