一道关于java序列化的问题,看大家知多少————
Posted import java.*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道关于java序列化的问题,看大家知多少————相关的知识,希望对你有一定的参考价值。
问题先放在这里,稍后我会做出解答
已知类有Test和Test2,问两次主程序的输出结果是多少(SerializeUtil只是序列化的工具类)
类Test
public class Test implements Serializable{ private static final long serialVersionUID = 1L; private int num; private transient String str; public Test(){ this.num = 0xFFFF; this.str = "string"; } public Test(int num, String str) { this.num = num; this.str = str; } @Override public String toString() { return num + ","+str; } }
类Test2
public class Test2 implements Externalizable,Serializable{ private static final long serialVersionUID = 1L; private int num; private transient String str; public Test2() { this.num = 0xFFFF; this.str = "hello"; } public Test2(int num, String str) { this.num = num; this.str = str; } @Override public void writeExternal(ObjectOutput out) throws IOException { out.write(num); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.num = in.read(); } @Override public String toString() { return num + ","+str; } }
两个主程序:
public static void main(String[] args) { Test test = new Test(); File file = new File("d:/test.bin"); SerializeUtil.writeObject(file,test); Test test2 = (Test) SerializeUtil.readObject(file); System.out.println(test); System.out.println(test2); }
public static void main(String[] args) { Test2 test2 = new Test2(); File file = new File("d:/test2.bin"); SerializeUtil.writeObject(file,test2); Test2 t = (Test2) SerializeUtil.readObject(file); System.out.println(test2); System.out.println(t); }
附SerializeUtil的代码,可无视——
1 public class SerializeUtil { 2 3 public static void writeObject(File file,Object object){ 4 FileOutputStream fileOutputStream = null; 5 try { 6 fileOutputStream = new FileOutputStream(file); 7 ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream); 8 objectOutputStream.writeObject(object); 9 objectOutputStream.flush(); 10 }catch (IOException e){ 11 e.printStackTrace(); 12 }finally { 13 if(fileOutputStream!=null){ 14 try { 15 fileOutputStream.close(); 16 } catch (IOException e) {} 17 } 18 } 19 } 20 21 public static Object readObject(File file){ 22 FileInputStream fileInputStream = null; 23 try { 24 fileInputStream = new FileInputStream(file); 25 ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream); 26 return objectInputStream.readObject(); 27 }catch (ClassNotFoundException|IOException e){ 28 e.printStackTrace(); 29 }finally { 30 if(fileInputStream!=null){ 31 try { 32 fileInputStream.close(); 33 } catch (IOException e) {} 34 } 35 } 36 return null; 37 } 38 39 }
答案如下:
/* 第一个主程序: 65535,string 65535,null 第二个主程序: 65535,hello 255,hello */
以上是关于一道关于java序列化的问题,看大家知多少————的主要内容,如果未能解决你的问题,请参考以下文章