the imports checked for validity at compile
time? e.g. will the code containing an
import such as java.lang.ABCD compile?
Yes the imports are checked for the semantic
validity at compile time. The code containing
above line of import will not compile. It
will throw an error saying,can not resolve
symbol : class ABCD
location: package io
is the difference between declaring a
variable and defining a variable?
In declaration we just mention the type
of the variable and it's name. We do not
initialize it. But defining means declaration
e.g String s; is just a declaration while
String s = new String ("abcd");
Or String s = "abcd"; are both
No. A top level class can not be private
or protected. It can have either "public"
or no modifier. If it does not have a modifier
it is supposed to have a default access.If
a top level class is declared as private
the compiler will complain that the "modifier
private is not allowed here". This
means that a top level class can not be
private. Same is the case with protected.
The class whose instances are to be serialized
should implement an interface Serializable.
Then you pass the instance to the ObjectOutputStream
which is connected to a fileoutputstream.
This will save the object to a file.
can I customize the seralization process?
i.e. how can one have a control over the
Yes it is possible to have control over
serialization process. The class should
implement Externalizable interface. This
interface contains two methods namely readExternal
and writeExternal. You should implement
these methods and write the logic for customizing
the serialization process.
Externalizable is an interface which contains
two methods readExternal and writeExternal.
These methods give you a control over the
serialization mechanism. Thus if your class
implements this interface, you can customize
the serialization process by implementing
When you serialize an object, what happens to the object references included in the object?
The serialization mechanism generates an
object graph for serialization. Thus it
determines whether the included object references
are serializable or not. This is a recursive
process. Thus when an object is serialized,
all the included objects are also serialized
alongwith the original obect.
happens to the static fields of a class
There are three exceptions in which serialization doesnot necessarily read and write to the stream. These are
1. Serialization ignores static fields, because they are not part of ay particular state state.
2. Base class fields are only hendled if the base class itself is serializable.
3. Transient fields.
Received from Sandesh Sadhale Modified after P.John David comments.]