浏览 493 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-03-06
import java.io.*;
public class Customer implements Serializable {
private int age;
public Customer(int age ){
this.age = age;
}
/* 第一处注释
private void writeObject(ObjectOutputStream os)throws IOException{
os.defaultWriteObject();
System.out.println("write Object");
}
private void readObject(ObjectInputStream is)throws IOException,ClassNotFoundException{
is.defaultReadObject();
System.out.println("readObject ");
}
*/
public String toString(){
return "age="+age;
}
public static void main(String[] args)throws Exception{
Customer custormer = new Customer(24);
System.out.println("before Serializable: "+custormer);
ByteArrayOutputStream buf = new ByteArrayOutputStream();
ObjectOutputStream o = new ObjectOutputStream(buf);
o.writeObject(custormer);
byte[] byteArray = buf.toByteArray();
for(int i=0;i<byteArray.length;i++){
System.out.print(byteArray[i]+"");
if((i%10==0 &&i!=0)|| i==byteArray.length-1)System.out.println();
}
//第二处注释
byteArray[byteArray.length-4]=-1;
byteArray[byteArray.length-3]=-1;
byteArray[byteArray.length-2]=-1;
byteArray[byteArray.length-1]=-10;
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(byteArray));
custormer = (Customer)in.readObject();
System.out.println("After Serializable:"+custormer);
}
}
1.上面的程序能正确运行,但加上第一处注释的内容后,运行时就会抛出Exception in thread "main" java.io.StreamCorruptedException: invalid type code: F6 异常, 2.对于第二处注释修改序列化对象的值有点不明白,为啥如上面的程序所示把最后 的四个字节设成-1 ,-1 -1 ,-10 结果就变成-10???? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
| 返回顶楼 | |
|
时间:2008-04-22
问题1:是不是流冲突了,注释一有个一个默认的io流操作,然后注释二是个新的操作这个对象的流,因为对它进行修改了,所以导致的?把注释二注释掉,注释一放开,也不会报错。。。
问题二:一个int对应四个字节:1111111111111111111111110110 就是-10 |
|
| 返回顶楼 | |
|
时间:2008-04-23
Please set a static sid
|
|
| 返回顶楼 | |



