Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么序列化可以在没有实现Serializable的情况下工作_Java_Serialization - Fatal编程技术网

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

Java 为什么序列化可以在没有实现Serializable的情况下工作,java,serialization,Java,Serialization,序列化类时是否必须实现可序列化类。我尝试将对象数据放入带有可序列化实现和不带可序列化实现的文件中,发现完全没有区别 片段-1 片段-2 在这两种情况下,程序运行良好,save.res的内容看起来完全相似 实现Serializable的好处是什么?如果我可以在不实现Serializable的情况下完成任务 Serializable理想情况下应该由需要序列化的对象实现字符串实现可序列化。您正在序列化字符串对象。您没有序列化SerializableTest 换句话说,SerializableTest

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

片段-1
片段-2 在这两种情况下,程序运行良好,save.res的内容看起来完全相似

  • 实现Serializable的好处是什么?如果我可以在不实现Serializable的情况下完成任务

  • Serializable
    理想情况下应该由需要序列化的对象实现<代码>字符串实现
    可序列化
    。您正在序列化
    字符串
    对象。您没有序列化
    SerializableTest


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

    1)尝试序列化某个自定义类2)尝试从输出反序列化以构造对象表示,你会明白的。谢谢大家的回复,我现在明白了这个概念:)不知道为什么,但是在os.writeObject(test);test是一个对象,为什么我们要将它命名为字符串?
    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");
        }
    }
    
        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");
        }
    }