我认为我理解什么是Java Bean:Java类(或多个类),其中包含无参数构造函数,可序列化,并使用getter和setter公开其字段。
Java Bean必须公开所有字段才能符合Bean的资格吗?如果不是,它甚至需要公开任何一个吗?
Java Bean可以包括有参数的构造函数和无参数构造函数吗?
Java Bean的目的是什么,除了符合特定的编码风格?似乎有很多关于“beans this”或“beans that”的讨论,但我不知道它们具体有什么优势。
我完全可以理解制作无参数构造函数。可能有很多原因,而且如果无参数构造函数帮助编译器进行一些优化,我也不会感到惊讶。我也可以理解使您的类可序列化。即使永远不会序列化该类,也可能会这样做,回头进行修改可能会很麻烦(或在黑盒库中不可能)。
但最好奇的是要求所有字段都可以通过getter和setter访问。当我需要时,我确实在自己的工作中使用它们,但是Java Bean需要它们似乎有些奇怪(根据我的答案可能需要所有字段)。如果涉及反射问题,那么反射难道不能像这样轻松地获取字段吗?如果不仅仅是设置值而需要其他操作,那么如果方法存在,则反射难道不能使用getter / setter代替字段吗?