码迷,mamicode.com
首页 > 编程语言 > 详细

一道关于java序列化的问题,看大家知多少————

时间:2016-11-16 19:23:38      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:src   bin   技术分享   多少   rgs   art   version   alt   not   

 

问题先放在这里,稍后我会做出解答

 

已知类有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序列化的问题,看大家知多少————

标签:src   bin   技术分享   多少   rgs   art   version   alt   not   

原文地址:http://www.cnblogs.com/xcr1234/p/6071083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!