Java 序列化检测?
我必须写些什么,以便对象知道何时进行序列化和反序列化,以便在序列化之前和反序列化之后执行某些操作?为此,可以使用Java 序列化检测?,java,serializable,Java,Serializable,我必须写些什么,以便对象知道何时进行序列化和反序列化,以便在序列化之前和反序列化之后执行某些操作?为此,可以使用readObject和writeObject方法writeObject方法 基本上,您将这样做: class MyClass implements Serializable{} 有关这些方法用法的更多信息:您希望实现什么?序列化对象在写入.ser文件时保持其状态。请您更具体地说明您的最终目标是什么。这些方法来自ObjectOutputStream和ObjectInputStream。
readObject
和writeObject
方法<序列化对象引用时,将执行code>writeObject方法
基本上,您将这样做:
class MyClass implements Serializable{}
有关这些方法用法的更多信息:您希望实现什么?序列化对象在写入.ser文件时保持其状态。请您更具体地说明您的最终目标是什么。这些方法来自ObjectOutputStream和ObjectInputStream。用于序列化和反序列化对象的类。但是对象本身无法检测它是否将被序列化或反序列化。@eyp
writeObject
在序列化对象时被调用。这不是一种检测我即将被序列化的方法吗(如果我是一个对象引用,并且我的类实现了Serializable
)?Serializable.writeObject是一个私有方法,因此不能重写它来更改其行为。@eyp该方法不是Serializable
的一部分。接口不能有private
方法,默认情况下,接口的所有方法都是public abstract
。您需要查看一些Java。writeObject
和readObject
是完全奇怪的野兽:从未从您自己的代码中调用的私有回调方法。这不是Java更好的设计选择之一。
public class MyClassToSerialize implements Serializable {
private int data;
/* ... methods ... */
private void writeObject(ObjectOutputStream os) throws IOException {
os.defaultWrite(); //serialization of the current serializable fields
//add behavior here
}
}