zoukankan      html  css  js  c++  java
  • 一道关于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
    */
    答案
  • 相关阅读:
    大三学习进度55
    大三学习进度56
    深入理解Java:注解(Annotation)自定义注解入门
    Django2实战示例 第三章 扩展博客功能
    Django2实战示例 第二章 增强博客功能
    12月07日总结观影数据集之大数据分析数据清洗
    12月06日总结
    12月04日阅读笔记
    12月03日总结
    12月05日总结
  • 原文地址:https://www.cnblogs.com/xcr1234/p/6071083.html
Copyright © 2011-2022 走看看