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。         ...
  • tiwerbao
  • tiwerbao
  • 2015年02月26日 22:36
  • 3777

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

(对象序列化与反序列化、transient关键字) 这篇文章很直接,简单易懂。尝试着翻译一下 ,原文是What are writeObject and readObject? Customizing...
  • fengwen2011
  • fengwen2011
  • 2016年04月10日 21:55
  • 2004

Java浅谈流之对象流ObjectInputStream和ObjectOutputStream

我们知道Java中对文件操作有6种流:              1 文件字节流:这是InputStream和OutputStream的子类 eg: FileInputStream  FileOut...
  • weiweiyixiaocsdn
  • weiweiyixiaocsdn
  • 2015年04月28日 16:36
  • 6840

Java objectOutputStream的用法

ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。可以使用 ObjectInputStream 读取(重构)对象。通过在流中使用文件可以实现对...
  • chaoyu168
  • chaoyu168
  • 2015年11月10日 22:38
  • 13793

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

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

writeObject()和writeUnshared()的区别

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

java.io.NotSerializableException: 没实现序列化对象而写入文件流的报错

有参数的构造器 java.io.NotSerializableException: br.com.waslleysouza.cc.Person at java.io.ObjectOutputStr...
  • evilcry2012
  • evilcry2012
  • 2015年04月30日 15:10
  • 1090

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

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

Serializable:writeObject/readObject有的限制?

writeObject/readObject的实现有没有什么限制?答案是没有任何限制,可以任意实现。 比如说如下面这样:private void writeObject(ObjectOutputSt...
  • BlackCutter
  • BlackCutter
  • 2015年07月08日 13:17
  • 678

黑马程序员_java基础视频第21天_JavaIO续集3

---------------------- android培训、java培训、期待与您交流! ----------------------           --------------...
  • Y13530828499
  • Y13530828499
  • 2011年10月04日 23:39
  • 1929
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Serializable:writeObject/readObject有的限制?
举报原因:
原因补充:

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