控制序列化

时间:2012-04-08 04:44:32

标签: java

我正在阅读一篇文章,该文章指出..如果类的超类已经在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类中,我怎么能写出表示抛出不可服务异常的代码..它就像抛出不可服务的异常......请指教..

1 个答案:

答案 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();
    }  

}