我就在这里
分类: Java
2011-12-08 09:43:56
//aaaa:25:3000.5
bbbb:24:3200.4
上面的程序中我们定义了一个带参数的方法,那么我们就会想在对象反序列化的时候,会去调用构造方法,构建对象吗?答案是不会去调用对象的构造方法,而是根据序列化的数据直接生成对象。
不是对象的所有的东西都可以序列化的。 当一个对象被序列化时,只保存对象的非静态成员变量,不能保存任何的成员方法和静态的成员变量。如果一个对象的成员变量是一个对象,那么这个对象的数据成员也会被保存。如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException。我们可以将这个引用标记为transient,那么对象仍然可以序列化。 我们仔细看刚才的代码我们在我们创建的线程前面加上了transient说明线程对象是不序列化的。 有时候我们需要对一些数据进行加密然后再序列化,然后反序列化的时候在调用相应的方法解密,这时候我们可以调用两个方法writeObject和readObject。这两个方法可以按照我们的自己需要的方法和顺序,去序列化对象,然后再反序列化。下面的例子是修改了上面的例子中的一点东西,看完了你就知道这两个方法怎么用了://Write Object
bbbb:24:0.0 从结果中我们可以看出在我们序列化和反序列化的时候调用了我们自己写的方法。 如果哪里错误,还请指出。Write Object
Read Object
aaaa:25:0.0
Read Object