我正在阅读一篇文章,该文章指出..如果类的超类已经在Java中实现了Serializable接口,那么它已经可以在Java中进行序列化,因为你无法实现一个接口,它实际上不可能使它成为Non Serializable类但是是的,有一种方法可以避免新类的序列化。要避免java序列化,您需要在类中实现writeObject()和readObject()方法,并且需要从这些方法中抛出NotSerializableException。这是定制java序列化过程的另一个好处,如上面的问题所述,并且通常在面试过程中作为后续问题提出。
对于ex ..有一个超类..
class Animal implements Serializable
{
int weight = 42;
}
and there is a subclass...
class Dog extends Animal
{
private void writeObject(ObjectOutputStream o)
throws IOException, ClassNotFoundException
{
//throw nonserializable exception
}
private void readObject(ObjectInputStream o)
throws IOException, ClassNotFoundException
{
//throw nonserializable exception
}
}
请你告诉我如上所述,在readobject()和writeobject()里面的Dog类中,我怎么能写出表示抛出不可服务异常的代码..它就像抛出不可服务的异常......请指教..
答案 0 :(得分:1)
class Dog extends Animal
{
private void writeObject(ObjectOutputStream o)
throws IOException, ClassNotFoundException
{
throw new NotSerializableException();
}
private void readObject(ObjectInputStream o)
throws IOException, ClassNotFoundException
{
throw new NotSerializableException();
}
}