Java序列化和JavaBeans

Cri*_*lho 1 java serialization javabeans

快速问题,当将对象标记为可序列化时,是否需要成为JavaBean?我的意思是,你能序列化一个不是JavaBean的对象吗?它有风险吗?如果您打算将对象序列化,那么始终将对象设为JavaBean是一种好习惯吗?

hvg*_*des 11

你正在以错误的方式看待它.Java Bean是任何

1)实现Serializable
2)具有无参数构造函数
3)具有私有成员和setter/getters

所以你的问题

将对象标记为可序列化,是否需要是JavaBean?

让它倒退.通过实现接口,任何类都可以是Serializable.并非所有可序列化类都定义Java Bean.

我的意思是,你能序列化一个不是JavaBean的对象吗?

是.

如果您打算将对象序列化,那么始终将对象设为JavaBean是一种好习惯吗?

最好在设计类时考虑数据封装.这意味着直接限制对字段的访问,并在适当的地方使用setter和getter.

当然,从API的角度来看,并不总是需要公共的无参数构造函数.

如果要使用依赖于Java Bean类的库,则实际上只需要遵循Java bean标准.