关闭

Serializable:writeObject/readObject有的限制?

标签: 序列化
406人阅读 评论(0) 收藏 举报
分类:

writeObject/readObject的实现有没有什么限制?答案是语法层面没有任何限制。

比如说如下面这样:

private void writeObject(ObjectOutputStream out) throws IOException
{
    System.out.println("这里的方法吧?");
}

private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
{
    System.out.println("确实是调用这里的方法!");
}

测试程序:

public void testOut() throws FileNotFoundException, IOException {
        PeopleName luren01 = new PeopleName("james","de","bang");
        ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("D:\\temp.txt"));
        out.writeObject(luren01);
        out.flush();
        out.close();
    }
    @Test
    public void testIn() throws FileNotFoundException, IOException, ClassNotFoundException {
        ObjectInputStream in = new ObjectInputStream(new FileInputStream("D:\\temp.txt"));
        in.readObject();
        in.close();

    }

结果这两个writeObject/readObject并没有语法错误,在序列化、反序列化过程中依然被调用了,只是它并没有实际的完成序列化和反序列化的工作。
序列化框架只是实现了会回调序列化对象的writeObject/readObject方法,但是对方法的实现其实并没有限制。
正常功能的的writeObject/readObject虽然从技术角度而言,不调用defaultWriteObject/defaultReadObject是合法的,但是不推荐这样做。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场