浏览 4577 次
锁定老帖子 主题:一个比较偏的问题,java序列化
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-21
PipedInputStream pipin = new PipedInputStream(); PipedOutputStream pipout = new PipedOutputStream(pipin); ObjectOutputStream out = new ObjectOutputStream(pipout); SyndEntry entry = new SyndEntryImpl(); System.out.println(ss); out.writeObject(entry); out.close(); 我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-05-21
大家都来看看 我觉得这个问题比较偏,大家讨论下呀
|
|
返回顶楼 | |
发表时间:2007-05-21
序列户serialID有没有generated?
|
|
返回顶楼 | |
发表时间:2007-05-21
假如像你说的一样,运行到这一步就停住了,没有任何错误,那说明,程序正在等待,你用了pipe,我认为是你的io操作写的有问题,你可以试试先写到文件里
FileOutputStream fileOut = ...; ObjectOutputStream out = new ObjectOutputStream(fileOut); |
|
返回顶楼 | |
发表时间:2007-05-21
楼上说的这个该怎么generated?那个类是Rome自带的实现类,也跟平时我们写Serializable的类一样并没有指定serialID,但是自己写的类都是能够writerObject的呀,怪就怪在这里了
|
|
返回顶楼 | |
发表时间:2007-05-21
不是pipe的问题,因为其它的对象是可以的,我上传个rome,大家也试试
|
|
返回顶楼 | |
发表时间:2007-05-23
javaeyes 写道 做rome 解析RSS的时候发现一个奇怪的现象,先看代码
PipedInputStream pipin = new PipedInputStream(); PipedOutputStream pipout = new PipedOutputStream(pipin); ObjectOutputStream out = new ObjectOutputStream(pipout); SyndEntry entry = new SyndEntryImpl(); System.out.println(ss); out.writeObject(entry); out.close(); 我原想把SyndEntryImpl的实例进行对象序列化存到文件中,但是程序运行到out.writeObject(entry);这一句的时候就停住了,没有任何错误,cpu也正常,SyndEntryImpl这个类已经声名实现了Serializable。这难道是java的bug? 你这段代码有问题:pipin这个stream需要运行在另外一个线程,来读取写入管道的数据, 下面这段可以运行的。 final PipedInputStream pipin = new PipedInputStream(); final PipedOutputStream pipout = new PipedOutputStream(pipin); new Thread(new Runnable() { public void run() { int c = -1; try { while ((c = pipin.read()) >= 0) { System.out.print(c); } } catch (IOException e) { e.printStackTrace(); } } }).start(); ObjectOutputStream out = new ObjectOutputStream(pipout); SyndEntry entry = new SyndEntryImpl(); System.out.println("ss"); out.writeObject(entry); out.flush(); out.close(); |
|
返回顶楼 | |