`
wangzl2222
  • 浏览: 151271 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java.lang.io包 Serializable

    博客分类:
  • java
阅读更多
  序列化是什么:序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
  序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重 构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例序列化的什么特点:如果某个类能够被序列 化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。
  简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。
在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,
如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

当实现java.io.Serializable接口的实体(类)没有显式地定义一个名为serialVersionUID,
类型为long的变量时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作序列化版本比较用,
这种情况下,只有同一次编译生成的class才会生成相同的serialVersionUID 。

package com.test;

import java.io.Serializable;

public class Test1 implements Serializable {

private String name = "my name is a";
private Test2 b = null;

Test1 () {
b = new Test2 ();
}

public Test2 getB() {
return b;
}

public void setB(Test2 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();
}
}


public class Test2 implements Serializable{
private String name = "my name is Test2";

Test2 () {
}

public String getName() {
return name;
}

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

这样就可以写读数据了
但如果test1、test2有一个没有实现Serializable接口的话,就会出现java.io.NotSerializableException:
分享到:
评论

相关推荐

    stuts2.2_API文档

    java.lang.Throwable (implements java.io.Serializable) java.lang.Exception java.lang.RuntimeException com.opensymphony.xwork2.XWorkException (implements com.opensymphony.xwork2.util.location.Locatable...

    spring4.0 API

    java.util.HashMap,V&gt; (implements java.lang.Cloneable, java.util.Map,V&gt;, java.io.Serializable) java.util.LinkedHashMap,V&gt; (implements java.util.Map,V&gt;) org.springframework.core.annotation....

    最最常用的 100 个 Java类分享

    24. `java.io.Serializable`:Serializable接口用于对象序列化,允许对象的状态被保存和恢复。 25. `java.util.LinkedList`:LinkedList是双向链表实现的List,适合频繁插入和删除操作。 26. `java.text....

    Java API中文文档.rar

    3. `java.io`包:包含用于输入/输出操作的类和接口,如`File`用于文件操作,`InputStream`和`OutputStream`代表数据流,`BufferedReader`和`PrintWriter`用于文本读写,以及`Serializable`接口用于对象序列化。...

    Hibernate和java中的对应数据类型

    - `java.io.Serializable` 通常用于存储复杂对象,映射为 `VARBINARY`、`BLOB` - `java.sql.Clob` 对应于 SQL 的 `CLOB` - `java.sql.Blob` 对应于 SQL 的 `BLOB` - `java.lang.Class` 映射为 `VARCHAR`,存储类...

    JavaAPI(官方英文版)

    例如,`java.util.Comparator`接口用于比较对象,而`java.io.Serializable`接口则表示类可以被序列化。 4. **枚举(Enum)**:Java允许定义枚举类型,这是一种特殊的类,可以有预定义的实例。比如`java.util....

    Java API接口详述.rar

    1. `java.io.Serializable`: 使类的对象能够进行序列化,用于持久化数据或在网络中传输。 2. `java.lang.Cloneable`: 标记接口,表示对象可以被克隆。 3. `java.lang.Runnable`: 实现此接口的类可以作为线程执行的...

    javaApi分类[参考].pdf

    13. **Java.io**: I/O流处理,包括FileInputStream、OutputStream和Serializable接口,用于文件读写和数据流操作。 14. **Java.lang**: 基础类库,包括Object、String、System和Exception等核心类,是所有Java类的...

    NC总帐API帮助文档

    java.io.Serializable, java.lang.Cloneable, java.util.EventListener, nc.vo.gl.vouchervaluechange.ValueChangeListener, nc.vo.glpub.IVoAccess -----------------------------------------------------------...

    Hibernate中数据类型

    - **二进制类型**:`byte[]` 通常映射到 `BINARY`、`VARBINARY` 或 `BLOB`,`java.lang.String` 可以映射到 `TEXT` 或 `CLOB`,`java.io.Serializable` 对象可以存储为 `VARBINARY`、`BLOB`,`java.sql.Clob` 和 `...

    JDK6API中文参考手册[沈东良制].rar

    接口如`java.io.Serializable`和`java.lang.Runnable`则定义了特定的行为规范。 3. **异常处理** 异常处理是Java程序设计的关键部分。在JDK6中,异常通过`try-catch-finally`语句块进行捕获和处理。常见的异常类如...

    Java api中文文档

    1. **包(Package)**:Java的包是一种组织类的方式,它将相关的类和接口聚集在一起,例如`java.lang`、`java.util`、`java.io`等。`java.lang`包是所有Java程序的基础,包含了一些基本类型和对象的类,如`String`、...

    Java API帮助文档中文版

    例如,`java.io.Serializable`接口表示一个对象可以被序列化,即将对象的状态转换为字节流,便于存储或在网络中传输。而`java.lang.Runnable`接口则是多线程编程的基础,实现该接口的类可以通过`Thread`类的构造函数...

    JAVA API文档

    例如,`java.io.Serializable`接口表示对象可序列化。 4. **枚举(Enum)**: 枚举类型是一种特殊的类,用于定义有限的、预定义的值集合。例如,`java.util.concurrent.TimeUnit`枚举定义了时间单位。 5. **注解...

    java1.6API中文帮助文档

    3. **输入/输出**:`java.io`包包含流式I/O操作,如`FileInputStream`和`FileOutputStream`用于文件读写,`BufferedReader`和`PrintWriter`用于文本处理,以及`Serializable`接口支持对象的序列化和反序列化。...

    Java 2平台安全技术-结构,API设计和实现

    3.6.12 java.io .Serializable Permission 39 3.6.13 java.security.Security Permission 39 3.6.14 java.security.AllPermission 40 3.6.15 许可权隐含中的隐含 40 3.7 分配许可权 41 3.8 Protection Domain 42 ...

    学习Java过程中需要导入的各类包

    新的I/O包,提供了非阻塞I/O和通道(Channels)的概念,性能上优于传统的`java.io`,适用于高并发场景。 5. **java.awt**和**javax.swing**: 这两个包用于创建图形用户界面(GUI)。`java.awt`包含了基本的组件...

    30个java工具类

    12. **序列化**:`java.io.Serializable`接口标记一个类可以被序列化,`ObjectOutputStream`和`ObjectInputStream`用于对象的序列化和反序列化。 13. **Lambda表达式**:Java 8引入的Lambda表达式简化了函数式编程...

    java反射机制

    - 数据序列化和反序列化,如`java.io.Serializable`接口的实现。 然而,反射机制也存在性能开销和安全风险。由于反射可以绕过编译时的类型检查,可能导致类型不匹配和安全漏洞。因此,在使用反射时应谨慎,避免不必...

    JAVA 2平台安全技术-结构,API设计和实现

    3.6.12 java.io .Serializable Permission 39 3.6.13 java.security.Security Permission 39 3.6.14 java.security.AllPermission 40 3.6.15 许可权隐含中的隐含 40 3.7 分配许可权 41 3.8 Protection Domain 42 ...

Global site tag (gtag.js) - Google Analytics