gpt4 book ai didi

java - 未实现 Serialized 的类的序列化

转载 作者:行者123 更新时间:2023-12-01 16:36:03 25 4
gpt4 key购买 nike

我有2个类serial1和serial 2。serial1实现了Serialized,而serial2没有。根据理论,我应该得到以下代码的异常,但它工作正常。为什么会这样?

import java.io.*;

public class SerialTest {

public static void main(String args[]){
FileOutputStream fos=null;
ObjectOutputStream oos =null;
serial1 se = new serial1();
serial1 sd = null;
se.mets();
try {
fos= new FileOutputStream("serialtest");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
oos =new ObjectOutputStream(fos);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
oos.writeObject(se);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

FileInputStream fis=null;
ObjectInputStream ois = null;

try {
fis = new FileInputStream("serialtest");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ois = new ObjectInputStream(fis);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
sd = (serial1) ois.readObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sd.mets();

}

}


import java.io.Serializable;

public class serial1 implements Serializable{

/* public static void main(String []args){
serial1 ss = new serial1();
ss.mets();
}*/

public void mets(){
serial2 s2 = new serial2();
System.out.println( "serial 1 + mets");
s2.met1();
}
}


public class serial2 {

public void met1(){
System.out.println("serial2 + met1");
}

}

------------------------*输出是

系列 1 + 梅兹

序列2 + met1

系列 1 + 梅兹

序列2 + met1

最佳答案

您实际上并未序列化serial2。您的 mets 方法创建了一个局部变量,但一旦该方法返回,它就会超出范围并有资格进行垃圾回收。

如果您在 serial1 中有一个类型为 serial2 的实例变量,那么当您尝试序列化时您会看到异常(假设它是非空值),但是局部变量不会成为问题。

关于java - 未实现 Serialized 的类的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com