无法使用ObjectOutputStream了解输出格式

时间:2017-01-18 06:09:50

标签: java serialization

我使用ObjectOutputStream编写了以下代码:

class ClassToTestOutputStream implements Serializable{

    int a;
    String b;

    public ClassToTestOutputStream(){
        a=10;
        b="Deepak";
    }

    public String toString() {

        String s = ""+a+" "+b;
        return s;
    }
}
public class UsingOutputStreams {

    ClassToTestOutputStream ref;
    private ObjectOutputStream oos;

    public UsingOutputStreams(){
    try {
         oos = new ObjectOutputStream(System.out);
    } catch (IOException e) {
        e.printStackTrace();
    }
    ref = new ClassToTestOutputStream();
}

public void writeOnScreen(){

    try {
        System.out.println("Writing on Screen");
        oos.writeObject(ref);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

    public static void main(String[] args) {

        UsingOutputStreams obj = new UsingOutputStreams();
        obj.writeOnScreen();
    } 
}

我得到了回答:

  

��在屏幕​​上书写

     

srClassToTestOutputStream����S��MIaL bt Ljava / lang / String; xp
  t迪帕克

请帮我弄清楚为什么打印这样的输出。

1 个答案:

答案 0 :(得分:1)

ObjectOutputStream以可由ObjectInputStream读取的形式编写Java对象。产生的输出不用于人类消费,并包含二进制形式的元数据和值。它并不意味着人类可读。正如您所见,尝试打印或显示写入ObjectOutputStream的数据将导致垃圾。

您应该仔细阅读ObjectOutputStream的Javadoc。