我听说JavaBean有规则,其中第一条主要规则是,对于每个JavaBean类,程序员必须显式提供公共默认构造函数。
请问有人能解释一下为什么我们需要为JavaBean提供默认构造函数?
更新:
请清楚地解释一下,为什么JVM不会为JavaBean提供默认构造函数,以及JVM在提供默认构造函数时的反应。
更新:
请清楚地解释一下,为什么JVM不会为JavaBean提供默认构造函数,以及JVM在提供默认构造函数时的反应。
这是维基百科上关于Java Bean的说法Java Bean Wikipedia article
该类必须有一个公共默认构造函数(无参数)。这使得在编辑和激活框架内轻松实例化。
实际上,如果一个类拥有默认构造函数,通过内省机制轻松实例化它是很容易的。
getClass().getClassLoader().loadClass("mypackage.myclass").newInstance();
我怀疑这是对语法和生成的类之间差异的误解。
public class Alpha {
}
public class Beta {
public Beta() {}
}
Alpha
中,默认构造函数是隐式的;在 Beta
中它是显式的。两者都有默认的公共构造函数,符合 JavaBean 规范。public class Gamma {
private final Type t;
public Gamma(Type t) {
this.t = t;
}
}
Gamma
不符合要求,因为没有公共的无参构造函数。在没有关于如何填充构造函数的上下文信息的情况下,将无法实例化此对象。