Java Serialization and JavaBeans

java, javabeans, serialization

Solution

You are looking at it the wrong way. A Java Bean is any class that is

1) implements Serializable 2) Has a no-arg constructor 3) Has private members and setters/getters

So your question

marking an object as serializable, does it need to be a JavaBean?

has it backwards. Any class can be Serializable, by implementing the interface. Not all serializable classes define a Java Bean.

I mean, can you serialize an object that's not a JavaBean?

Yes.

Is it a good practice to always make an object a JavaBean if you intend to serialize it?

It is good practice to design your classes with data encapsulation in mind. This means limiting access to fields directly, and using setters and getters where appropriate.

Of course, having a public no-arg constructor is not always necessary from an API point of view.

You really only need to follow the Java bean standard if you are going to use a library that depends on your classes being Java Beans.

Problem

Quick question, when marking an object as serializable, does it need to be a JavaBean? I mean, can you serialize an object that's not a JavaBean? Does it have any risk? Is it a good practice to always make an object a JavaBean if you intend to serialize it?

Original source