Java 控制序列化
我正在阅读一篇文章,文章中说,如果一个类的超类已经在Java中实现了可序列化的接口,那么它在Java中就已经可以序列化了,因为你不能不实现一个接口,它实际上不可能使它成为不可序列化的类,但是有一种方法可以避免新类的序列化。为了避免java序列化,您需要在类中实现writeObject()和readObject()方法,并且需要从这些方法中抛出NotSerializableException。这是定制java序列化过程的另一个好处,如上述问题所述,通常在面试过程中作为后续问题提问 例如。。有一个超类Java 控制序列化,java,Java,我正在阅读一篇文章,文章中说,如果一个类的超类已经在Java中实现了可序列化的接口,那么它在Java中就已经可以序列化了,因为你不能不实现一个接口,它实际上不可能使它成为不可序列化的类,但是有一种方法可以避免新类的序列化。为了避免java序列化,您需要在类中实现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类中所看到的那样,我如何编写指示抛出不可验证异常的代码..是否像抛出不可验证异常一样..请根据问题的存在提出建议..,我建议阅读异常和异常处理。非常感谢,请告知我们是否也需要一个catch块。。!!不在这里。这里抛出异常的目的是使序列化
Dog
成为不可能。它是试图序列化需要捕获异常的对象的代码。
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();
}
}