Java中的序列化问题
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中的序列化问题相关推荐
- fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...
- java中实现序列化的作用
Java 中进行序列化操作需要实现 Serializable 或 Externalizable 接口.序列化的目的有两个,第一个是便于存储,第二个是便于传输.一.序列化作用:1. 提供一种简单又可扩展 ...
- JAVA中JSON序列化和反序列化
JAVA中JSON序列化和反序列化 1 FASTJSON的序列化和反序列化 1.1 主函数 1.2 自定义对象 2 GSON序列化和反序列化 2.1 主函数 2.2 自定义对象 总结 不同包序列化和反 ...
- java中的序列化和反序列化
一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...
- java自定义外部接口_如何使用可外部化的接口在Java中自定义序列化
java自定义外部接口 在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用w ...
- 如何使用可外部化的接口在Java中自定义序列化
在上一篇文章"用示例介绍的有关Java序列化的一切"中 ,我解释了如何使用以下方法序列化/反序列化一个对象 Serializable接口,还说明了如何使用writeObject和r ...
- 对象序列化Java中的序列化
首先声明,我是一个菜鸟.一下文章中出现技术误导情况盖不负责 当两个进程在停止远程通信时,彼此可以发送各种类型的数据.无论是何种类型的数据,都市以二进制序列的情势在络网上传送.发送方需要把这个Java对 ...
- Java中的序列化到底是什么
我们都知道,新建一个对象的时候实现 Serializeable 接口,但为什么要这么做?什么时候这样子做?这样子做会不会出现幺蛾子?阿淼一个三连差点把自己都问懵逼了-- 那接下来,大家就和阿淼一起简单 ...
- K:java中的序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?以下内容将围绕这些问题进行展开讨论. Java序列化与反序列化 简单来说Java序列化是指把Java对象转 ...
最新文章
- 玩转SCVMM中的更新基线,实现虚拟平台基础服务器补丁自动更新
- Promise.all 的原理
- postfix本机测试本机时,telnet连接出错
- 2017-5-17 分析文本
- 接口自动化测试 返回html,接口自动化测试实战(更新完毕)
- 《零基础》MySQL 管理(三)
- 杭电3068 最长回文 最长回文的manacher算法
- 机器学习7/100天-K近邻算法
- MFC通过sql访问excel的方法
- Eclipse连接hdfs
- 【PDF转换 编辑】 推荐几个好用的pdf相关的网址和软件
- 新CCF-CSP认证历年真题解
- 布局中颜色搭配怎么看最舒服之白色的最佳10种颜色搭配
- Flash地址空间的数据读取——STM32
- 新世纪10年100个好东西 淘宝、QQ、伟哥入选
- (三十三 :2021.01.12)MICCAI 2016 追踪之论文纲要
- Android手机App测试常用功能测试点
- LibFuzzer学习(一):轻松找到心脏出血漏洞
- TCL2010年校园招聘笔试,一面———我的第一次应聘
- YX4057C芯片资料