-1

私は次のような記事を読んでいました.クラスのスーパークラスがすでにJavaでシリアライズ可能なインターフェースを実装している場合、Javaですでにシリアライズ可能です。インターフェースを未実装にすることはできないため、非シリアライズ可能なクラスにすることは実際には不可能ですが、新しいクラスのシリアル化を回避する方法。Java シリアライゼーションを回避するには、クラスに writeObject () および readObject () メソッドを実装し、それらのメソッドから NotSerializableException をスローする必要があります。これは、上記の質問で説明した Java シリアライゼーション プロセスをカスタマイズするもう 1 つの利点であり、通常、インタビューが進むにつれて、フォローアップの質問として尋ねられます。

たとえば、スーパークラスがあります..

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 クラスで見たように、シリアル化できない例外をスローすることを示すコードをどのように記述できますか..シリアル化できない例外をスローするようなものですか...アドバイスしてください..

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 に答える