我知道
JavaBean只是标准的
All properties private (use getters/setters)
A public no-argument constructor
Implements Serializable.
我们都知道不需要在类中提供非参数构造函数,因为如果我们在类中没有指定任何构造函数,java编译器将创建一个非参数构造函数。如果是这样,为什么程序员想要在javabean中创建一个非参数构造函数作为约定。
答案 0 :(得分:2)
一些人认为总是在代码中包含非arg构造函数是一种好习惯,因为这可以防止后续维护引入另一个构造函数的情况,从而丢弃隐式非arg构造函数,从而破坏任何外部代码依靠它。
答案 1 :(得分:2)
您对JavaBean 类的要求与其源代码的要求相混淆。 JavaBeans规范的任何部分都不涉及源代码的外观,它严格来说是生成的类。
所以,是的,每个JavaBeans类必须提供一个无效的构造函数,以及如何使用源代码(甚至使用字节码生成器)实现这一点完全取决于您。
答案 2 :(得分:0)
您不必明确地创建它。没有规则说你必须这样做。即使对于JavaBean,也可以让编译器为您创建一个(只要您不提供另一个,在这种情况下,您也需要一个明确的无参数构造函数) )。
但确实需要有一个,显式或隐式,因为ORM需要能够创建实例。
答案 3 :(得分:0)
如果没有像ORM或IOC容器那样的许多API内部组件可以实例化该对象,以便继续从数据源或其他bean依赖项设置bean属性。
许多人都这样做:
Class<?> clazz = Class.forName("com.foo.BeanClass");
Constructor<?> constructor = clazz.getConstructor();
Object bean = constructor.newInstance();
答案 4 :(得分:0)
你想在这些情况下创建一个无参数:
1)你想在无参数构造函数中做一些逻辑,所以不能使用默认值。
2)你有其他构造函数接受参数,在这种情况下,不会为你提供默认的no-arg构造函数。
第2点意味着拥有一个明确的无参数构造函数,允许您添加带参数的未来构造函数,而不必担心会丢失隐式的无参数构造函数。