请问Serializable序列化的作用,到底是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问Serializable序列化的作用,到底是啥?相关的知识,希望对你有一定的参考价值。

请问Serializable序列化的作用,到底是什么?我看了api也没有完全理解啊,拜托,各位大虾请详细说明????
最好是写一个易懂的例子,我会加会的,谢谢!!!!

类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。序列化接口Serializable没有方法或字段,仅用于标识可序列化的语义
例子:
package woxingwosu;

import java.io.Serializable;

public class A implements Serializable
private String name="my name is a";
private B b=null;
A()
b=new B();

public B getB()
return b;

public void setB(B b)
this.b = b;

public String getName()
return name;

public void setName(String name)
this.name = name;

public String show()
return "a.toString <a.name=\""+this.name+"\" a.b.name=\""+this.b.getName()+"\">"
+"\na="+this.toString()+" b="+this.b.toString();



class B
package woxingwosu;

import java.io.Serializable;

public class B implements Serializable
private String name="my name is B";
B()
public String getName()
return name;

public void setName(String name)
this.name = name;


class WriteSeri
package woxingwosu;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
/**
* 写Object(系列化)
* @author 我行我素
*/
public class WriteSeri
public static void main(String[] args)
ObjectOutputStream outObj=null;
try
FileOutputStream outStr=new FileOutputStream("obj.txt");
outObj=new ObjectOutputStream(outStr);
A a=new A();
outObj.writeObject(a);
System.out.println("write obj :"+a.show());
outObj.flush();
catch(Exception e)
e.printStackTrace();
finally
try
if(outObj!=null)
outObj.close();
catch(Exception e)
e.printStackTrace();






class ReadSeri
package woxingwosu;

import java.io.FileInputStream;
import java.io.ObjectInputStream;
/**
* 读Object(反系列化)
* @author 我行我素
*/
public class ReadSeri
public static void main(String[] args)
ObjectInputStream inObj=null;
try
FileInputStream inStr=new FileInputStream("obj.txt");
inObj=new ObjectInputStream(inStr);
A a=(A)inObj.readObject();
System.out.println("read Object :"+a.show());
catch(Exception e)
e.printStackTrace();
finally
try
if(inObj!=null)
inObj.close();
catch(Exception e)
e.printStackTrace();




参考技术A Serializable序列化,首先要了解的作用。主要是你在网络中传输对象时候,所传输的对象才需要进行序列化。所以一般在项目中javabean都是实现了序列化的。 参考技术B 只要记住这点,有关对象的都要序列化!原因你去问SUN吧!~~~~

Java中的警告:The serializable class FirstApplet does not declare a static final,请问是啥错误?

Java中的警告:The serializable class FirstApplet does not declare a static final,请问是什么错误?谢谢各位大侠啦。
程序可运行。
完整的警告:The serializable class FirstApplet does not declare a static final
serialVersionUID field of type long

那是Eclipse提供这个提示功能给你吧.
你点它warning的icon两下Eclipse就会自动给定.
如果你不喜欢,可以把它关掉,
windows -> preferences -> compiler -> Error/Warnings
-> Potential Programming problems
将Serializable class without serialVersionUID的warning改成ignore.

其实如果你没有考虑到兼容性问题时,那就把它关掉吧.
其实有这个功能是好的.
只要任何类别实作了Serializable这个介面,
如果没有加入serialVersionUID,Eclipse都会给你warning提示,
这个serialVersionUID为了让该类别Serializable后兼容.

考虑一下,如果今天你的类Serialized存到硬碟里,
可是后来你却更改了类别的field(增加或减少或改名).
当你Deserialize时,就会出现Exception.这样就会做成不兼容性的问题.

但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize.
这个可以避开不兼容性的问题.
参考技术A 大概是因为 你没有给它一个 serialVersionUID吧
这个ID可以用eclipse自动生成
也可以不用管他 没事的
参考技术B 你得把你的代码贴出来,估计你是没用工其直接在写代码,serializable的那个号有个固定的写法,估计你写错了. 参考技术C 序列化。。。

以上是关于请问Serializable序列化的作用,到底是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

[转]Java 之 Serializable 序列化和反序列化的概念,作用的通俗易懂的解释

谈谈实现Serializable接口的作用和必要性

Serializable 序列化和反序列化

请问UC手机浏览器的系统设置里面的UA,更改UA,UA到底指的是啥?更改UA有啥作用?

对Java Serializable(序列化)的理解和总结