For an instance of A to successfully serialize, field b must either be null or reference an object that is an instance of a serializable class. Perhaps B implements/extends Serializable or the object referenced is an instance of a subclass of B which itself implements Serializable. A common case of this would be if B were an interface that does not extend Serializable, say List.
There is no automatic transference of serializability to fields in
Java, as you may have been hoping for
Field c is guaranteed to work because it is transient. This may require you to implement a writeObject/readObject method. See the API for Serializable.