Java序列化是指将Java中的类对象状态以字节的形式保存,需要的时候可以解码获取,通常用于共享数据交互、网络通信等。在Java中,属于对象的状态才应该保存,因此,静态数据成员不能保存;如果不愿意保存某个变量,可以将此变量声明为transient;另外,并不是所有的对象都可以序列化,系统级的类对象如Thread、OutputStream、Socket等类及其子类对象是不可以序列化的。

要序列化某个对象,只需要类实现java.io.Serializable接口。如下例子:

 1 package de.vogella.java.serilization;
 2
 3 import java.io.Serializable;
 4
 5 public class Person implements Serializable {
 6   private String firstName;
 7   private String lastName;
 8   // stupid example for transient
 9   transient private Thread myThread;
10
11   public Person(String firstName, String lastName) {
12     this.firstName = firstName;
13     this.lastName = lastName;
14     this.myThread = new Thread();
15   }
16
17   public String getFirstName() {
18     return firstName;
19   }
20
21   public void setFirstName(String firstName) {
22     this.firstName = firstName;
23   }
24
25   public String getLastName() {
26     return lastName;
27   }
28
29   public void setLastName(String lastName) {
30     this.lastName = lastName;
31   }
32
33   @Override
34   public String toString() {
35     return "Person [firstName=" + firstName + ", lastName=" + lastName
36         + "]";
37   }
38
39 } 

 1 package de.vogella.java.serilization;
 2
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.ObjectInputStream;
 6 import java.io.ObjectOutputStream;
 7
 8 public class Main {
 9   public static void main(String[] args) {
10     String filename = "time.ser";
11     Person p = new Person("Lars", "Vogel");
12
13     // Save the object to file
14     FileOutputStream fos = null;
15     ObjectOutputStream out = null;
16     try {                                                     // 编码(序列化)的一般形式
17       fos = new FileOutputStream(filename); //定义保存的文件对象
18       out = new ObjectOutputStream(fos);   //定义对象输出流对象
19       out.writeObject(p);
20
21       out.close();
22     } catch (Exception ex) {
23       ex.printStackTrace();
24     }
25     // Read the object from file
26     // Save the object to file
27     FileInputStream fis = null;
28     ObjectInputStream in = null;
29     try {
30       fis = new FileInputStream(filename);  // 解码(反序列化)的一般形式
31       in = new ObjectInputStream(fis);
32       p = (Person) in.readObject();
33       out.close();
34     } catch (Exception ex) {
35       ex.printStackTrace();
36     }
37     System.out.println(p);
38   }
39 } 

转载于:https://www.cnblogs.com/YukiJohnson/archive/2012/12/11/2813697.html

Java中的序列化问题相关推荐

  1. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  2. java中实现序列化的作用

    Java 中进行序列化操作需要实现 Serializable 或 Externalizable 接口.序列化的目的有两个,第一个是便于存储,第二个是便于传输.一.序列化作用:1. 提供一种简单又可扩展 ...

  3. JAVA中JSON序列化和反序列化

    JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...

  4. java中的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

  5. java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化

    java自定义外部接口 在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用w ...

  6. 如何使用可外部化的接口在Java中自定义序列化

    在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用writeObject和r ...

  7. 对象序列化Java中的序列化

    首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 当两个进程在停止远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都市以二进制序列的情势在络网上传送.发送方需要把这个Java对 ...

  8. Java中的序列化到底是什么

    我们都知道,新建一个对象的时候实现 Serializeable 接口,但为什么要这么做?什么时候这样子做?这样子做会不会出现幺蛾子?阿淼一个三连差点把自己都问懵逼了-- 那接下来,大家就和阿淼一起简单 ...

  9. K:java中的序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...

最新文章

  1. 玩转SCVMM中的更新基线,实现虚拟平台基础服务器补丁自动更新
  2. Promise.all 的原理
  3. postfix本机测试本机时,telnet连接出错
  4. 2017-5-17 分析文本
  5. 接口自动化测试 返回html,接口自动化测试实战(更新完毕)
  6. 《零基础》MySQL 管理(三)
  7. 杭电3068 最长回文 最长回文的manacher算法
  8. 机器学习7/100天-K近邻算法
  9. MFC通过sql访问excel的方法
  10. Eclipse连接hdfs
  11. 【PDF转换 编辑】 推荐几个好用的pdf相关的网址和软件
  12. 新CCF-CSP认证历年真题解
  13. 布局中颜色搭配怎么看最舒服之白色的最佳10种颜色搭配
  14. Flash地址空间的数据读取——STM32
  15. 新世纪10年100个好东西 淘宝、QQ、伟哥入选
  16. (三十三 :2021.01.12)MICCAI 2016 追踪之论文纲要
  17. Android手机App测试常用功能测试点
  18. LibFuzzer学习(一):轻松找到心脏出血漏洞
  19. TCL2010年校园招聘笔试,一面———我的第一次应聘
  20. YX4057C芯片资料

热门文章

  1. spring集成web
  2. vue ---- webpack - devServer节点
  3. linux java运行环境_linux(centos)中java运行环境_jdk安装与配置 | OPS技术联盟
  4. java抠图边框颜色处理_java 实现抠图(项目应用场景:抠图章)
  5. ActiveMQ 认证
  6. ActiveMQ运行失败 not running
  7. 前端集成方案——理论(一)
  8. 人工智能为失散家人寻找“回家路”
  9. 【数学】稀疏图的随机游走问题
  10. 内核管理 之 内核管理概述