为什么序列化可以在不实现 Serializable 的情况下工作
Why does serialization work without implementing Serializable
序列化 class 时是否必须实现可序列化 class 。我尝试将对象数据放入带有和不带有可序列化实现的文件中,发现完全没有区别。
片段-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 的内容看起来非常相似。
- 当我可以在不实现的情况下做事时,实现 Serializable 有什么好处。
Serializable
理想情况下应该由需要序列化的对象来实现。 String
实施 Serializable
。您正在序列化 String
对象。您没有序列化 SerializableTest
.
换句话说,SerializableTest
是否实现了 Serializable
并不重要,因为 SerializableTest
不是被序列化的对象。
序列化 class 时是否必须实现可序列化 class 。我尝试将对象数据放入带有和不带有可序列化实现的文件中,发现完全没有区别。
片段-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 的内容看起来非常相似。
- 当我可以在不实现的情况下做事时,实现 Serializable 有什么好处。
Serializable
理想情况下应该由需要序列化的对象来实现。 String
实施 Serializable
。您正在序列化 String
对象。您没有序列化 SerializableTest
.
换句话说,SerializableTest
是否实现了 Serializable
并不重要,因为 SerializableTest
不是被序列化的对象。