为什么序列化在没有实现Serializable的情况下工作

时间:2015-06-03 16:27:15

标签: java serialization

在序列化类时是否必须实现Serializable类。我试图将对象数据放入带有和不带序列化实现的文件中,并且发现完全没有区别。

摘录-1

import java.io.*;
import java.net.*;
public class SerializableTest {

    int a= 10;
    String test="Serialize test";

    public static void main(String [] args){

        SerializableTest test =new SerializableTest();
        test.save();
    }

    public void save(){

        try{

            FileOutputStream fs = new FileOutputStream("save.res");
            ObjectOutputStream os = new ObjectOutputStream(fs);
            os.writeObject(test);
            os.close();

        }
        catch (Exception ex ){
            System.out.println("Error in opening or saving file");

        }
        System.out.println("Complete");
    }
}

摘录-2

    import java.io.*;
    import java.net.*;
    public class SerializableTest **implements Serializable**{

    int a= 10;
    String test="Serialize test";

    public static void main(String [] args){

        SerializableTest test =new SerializableTest();
        test.save();
    }

    public void save(){

        try{

            FileOutputStream fs = new FileOutputStream("save.res");
            ObjectOutputStream os = new ObjectOutputStream(fs);
            os.writeObject(test);
            os.close();

        }
        catch (Exception ex ){
            System.out.println("Error in opening or saving file");

        }
        System.out.println("Complete");
    }
}

在这两种情况下,程序运行良好,save.res的内容看起来非常相似。

  1. 如果我可以在不执行的情况下执行操作,那么实现Serializable有什么好处。

1 个答案:

答案 0 :(得分:3)

理想情况下,

Serializable应该由需要序列化的对象实现。 String实施Serializable。您正在序列化String对象。您没有序列化SerializableTest

换句话说,SerializableTest是否实现Serializable并不重要,因为SerializableTest不是被序列化的对象。