-1

我正在阅读一篇文章,其中指出..如果一个类的超类已经在 J​​ava 中实现了可序列化接口,那么它已经在 J​​ava 中可序列化,因为你不能未实现一个接口,它实际上不可能使它成为非可序列化类,但是是的一种避免新类序列化的方法。为避免 java 序列化,您需要在 Class 中实现 writeObject () 和 readObject () 方法,并且需要从这些方法中抛出 NotSerializableException。这是自定义 java 序列化过程的另一个好处,如上述问题中所述,通常它会随着面试的进行而作为后续问题提出。

例如 .. 有一个超类 ..

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 类中看到的那样告诉我,我如何编写指示抛出 nonserilizable 异常的代码......它是否像抛出 nonseriliable 异常......请告知..

4

1 回答 1

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

}
于 2012-04-08T04:47:59.900 回答