Serializable:writeObject/readObject有的限制?

原创 2015年07月08日 13:17:56

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是合法的,但是不推荐这样做。

初探Java序列化(2)-writeObject/readObject

上一篇《初探Java序列化(Serialization)》给我们大体介绍了什么是序列化和反序列化,以及解析了一下序列化出来的文件。接着我们看看JDK具体如何序列化一个Object。         ...

什么是writeObject 和readObject?可定制的序列化过程(转)

(对象序列化与反序列化、transient关键字) 这篇文章很直接,简单易懂。尝试着翻译一下 ,原文是What are writeObject and readObject? Customizing...

writeObject()和writeUnshared()的区别

writeUnshared()表示重新申请内存空间,让其地址发生改变
  • xyphf
  • xyphf
  • 2017年11月10日 21:16
  • 71

Java的Serializable序列化接口的readObject和writeObject方法

以前关于readObject()和writeObject()理解不深,不明白为什么两者要是private的。网上的很多文章都直接讲它们怎么用,没有清楚阐明其道理。 这篇文章很好的回答了这个问题:ht...

关于序列化对象.Serializable Object总结.

一个对象需要可实现序列化需要满足以下条件. 1.实现Serializable接口 2.父类必须实现可序列化或者存在默认无参构造函数. 3.类的域变量必须实现可序列化或者定义为transient类...

IO流 ObjectInputStream ObjectOutputStream Serializable writeObject(t) transient

Serializable叫做可以被序列化的,如果确实想把类的对象写到硬盘上,或者写到网络上,即想把它序列化为字节流,必须得实现这个接口,实现这个接口没有重写接口的方法,因为她没有定义方法,就定义了一个...

反序列化ObjectOutputStream.readObject()出现ClassNotFoundException

跨进程通信时,将序列化的对象的对象存入文件,两个进程通过读/写同一个文件来交换数据,达到通讯的效果。 中间遇到一个问题,就是在另一个进程反序列化的时候,报ClassNotFoundException...

flex socket.writeObject()发送对象,java接收flex socket发送过来的对象

参考文章: http://www.cnblogs.com/pelephone/archive/2012/04/03/java-as3-amf-vo.html    //java与as3,amf交互相互...

解决循环操作ObjectInputStream的readObject()方法的EOF异常

// 读入文件 FileInputStream reader = new FileInputStream("accout.txt"); ObjectInputStream bbr = new ...

Serializable序列化

  • 2014年04月27日 21:57
  • 26KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Serializable:writeObject/readObject有的限制?
举报原因:
原因补充:

(最多只允许输入30个字)