- 浏览: 188233 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. 序列化
2. 反序列化
3. 方法总结
transient不会被序列化。 import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class SerializableTest1{ public static void main(String[] args) throws Exception{ Person p1 = new Person(20, "zhangsan", 4.55); Person p2 = new Person(50, "lisi", 4.67); Person p3 = new Person(10, "wangwu", 17.78); FileOutputStream fos = new FileOutputStream("person.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(p1); oos.writeObject(p2); oos.writeObject(p3); oos.close(); System.out.println("--------------------"); FileInputStream fis = new FileInputStream("person.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Person p = null; for (int i = 0; i < 3; i++){ p = (Person) ois.readObject(); System.out.println(p.age + "," + p.name + "," + p.height); } ois.close(); } } class Person implements Serializable{ int age; String name; double height; public Person(int age, String name, double height){ this.age = age; this.name = name; this.height = height; } }
2. 反序列化
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class SerializableTest2 { public static void main(String[] args) throws Exception { Person2 p1 = new Person2(20, "zhangsan", 4.55); Person2 p2 = new Person2(50, "lisi", 4.67); Person2 p3 = new Person2(10, "wangwu", 17.78); FileOutputStream fos = new FileOutputStream("Person2.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(p1); oos.writeObject(p2); oos.writeObject(p3); oos.close(); System.out.println("--------------------"); FileInputStream fis = new FileInputStream("Person2.txt"); ObjectInputStream ois = new ObjectInputStream(fis); Person2 p = null; for (int i = 0; i < 3; i++){ p = (Person2) ois.readObject(); System.out.println(p.age + "," + p.name + "," + p.height); } ois.close(); } } class Person2 implements Serializable{ int age; String name; double height; public Person2(int age, String name, double height){ this.age = age; this.name = name; this.height = height; } private void writeObject(java.io.ObjectOutputStream out) throws IOException{ out.writeInt(age); out.writeUTF(name); System.out.println("write object"); } private void readObject(java.io.ObjectInputStream in) throws IOException,ClassNotFoundException{ age = in.readInt(); name = in.readUTF(); System.out.println("read object"); } }
3. 方法总结
当我们在一个待序列化/反序列化的类中实现了以上两个private方法(方法声明要与上面的保持完全的一致),那么就允许我们以更加底层、更加细粒度的方式控制序列化/反序列化的过程。 private void writeObject(java.io.ObjectOutputStream out) throws IOException{ out.writeInt(age); out.writeUTF(name); System.out.println("write object"); } private void readObject(java.io.ObjectInputStream in) throws IOException,ClassNotFoundException{ age = in.readInt(); name = in.readUTF(); System.out.println("read object"); }
发表评论
-
Java中获取IP地址、子网掩码、网关地址
2019-06-26 10:53 01. Java中获取IP地址、子网掩码、网关地址、ping连通 ... -
Java中ThreadLocal
2019-04-19 10:44 01. Java中ThreadLocal Java中的Th ... -
Java中原子性锁synchronized、Lock
2019-04-18 15:19 01. synchronized依赖JVM 1) 修饰代码 ... -
Java中原子性Atomic
2019-04-18 14:45 01. Atomic包简介 java.util.concu ... -
开发常用链接
2019-03-26 11:21 0在线工具:http://tool.oschina.net/ ... -
java1234学习目录
2019-03-21 11:08 01-01-01 N01 J2SEv2(41课时) ... -
Java中TCP和UDP
2018-10-25 10:55 3401. 网页内容获取 Url1.java impor ... -
Java中Thread线程
2018-10-25 09:38 3841. 实现线程的两种方式 1. 继承Thread类并重写 ... -
Java中CharSet集
2018-10-24 11:31 5371. CharSet集 import java.nio. ... -
Java中RandomAccessFile类
2018-10-24 11:30 4981. RandomAccessFile类 1. 使用Ra ... -
Java中I/O的字符流InputStreamReader和OutputStreamWriter
2018-10-22 09:43 4371. InputStreamReader和OutputStre ... -
Java中其它输入输出流
2018-10-22 09:08 4661. ByteArrayInputStream流 以ar ... -
Java中I/O的OutputStream流
2018-10-22 08:54 4831. Java中I/O的OutputStream流 1. ... -
Java中I/O的InputStream流
2018-10-22 08:42 4611. Java中I/O的InputStream流 1. ... -
Java中I/O的File类
2018-10-19 13:45 4301. Java中I/O的File类 1. 在window ... -
Java中innerClass内部类
2018-10-18 09:37 4341. Java中innerClass内部类 用AA.BB ... -
Java中adapter适配器
2018-10-18 08:36 5801. Java中adapter适配器 适配器adapte ... -
Java中awt包
2018-10-17 11:26 17051. Java中awt包 AWT事件模型Event 1 ... -
Java中frame对象
2018-10-17 10:56 6671. Java中frame对象 1. Frame对象 ... -
Java中exception异常
2018-10-17 10:24 4091. Java中exception异常 Java中的异常 ...
相关推荐
Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...
在Java中,如果一个类实现了`Serializable`接口,那么该类的对象就可以被序列化。序列化的目的是为了能够持久地保存对象的状态,或者在网络中传递对象。 序列化主要关注的是对象的状态(即其实例变量),而不是其...
在Java中,通过实现`Serializable`接口,可以方便地进行对象的序列化操作。序列化的核心在于能够将对象的状态转换为可以存储或传输的形式,从而实现对象的持久化和远程通信等功能。 #### 二、序列化的应用场景 ...
#### 六、序列化中的注意事项 - **`transient` 关键字**:使用 `transient` 可以排除某些字段不被序列化。 - **版本兼容性**:序列化的类应该定义一个 `serialVersionUID` 来确保版本兼容性。 - **私有构造函数**:...
### Java序列化(Serializable)的作用与反序列化详解 #### 一、序列化是什么? 序列化是指将程序中的对象转换为字节流的过程,从而方便存储或传输这些对象。通常,序列化用于将对象的状态(即其实例变量的值,而非...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
在 Java 中,序列化和反序列化是通过实现 Serializable 接口来实现的。Serializable 接口是一个标记接口,不包含任何方法,但它告诉 Java虚拟机(JVM)该类可以被序列化。 在上面的代码中,我们可以看到 ...
而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...
本文将深入探讨Android中的Serializable序列化机制,包括其原理、使用场景以及注意事项。 一、Serializable接口概述 Serializable接口是Java提供的一种序列化机制,它允许对象的状态被转换成字节流,以便于存储或者...
Java中的序列化与反序列化是Java编程语言中用于处理对象状态持久化和网络传输的重要技术。序列化是指将一个Java对象转换为字节流的过程,这样就可以将对象的状态保存到磁盘上或者通过网络传输。反序列化则是将字节流...
**Serializable序列化** 在Java编程语言中,`Serializable`接口是一个非常重要的概念,它涉及到对象的状态持久化和网络传输。序列化是将一个对象转换为字节流的过程,这样就可以将其保存到磁盘、数据库或者在网络中...
在Java中,序列化是通过实现`Serializable`接口来完成的。然而,Java的标准序列化机制并不支持直接将对象序列化为XML格式,而是默认生成二进制格式的数据。在实验7中,我们看到了如何使用第三方库XStream将Java对象...
在Java中,实现序列化主要通过实现`Serializable`接口来完成。`Serializable`接口是一个标记接口,不包含任何方法,仅仅表示该类的对象是可序列化的。 例如,我们有一个`Student`类,它实现了`Serializable`接口: ...
Java中的序列化主要通过实现`java.io.Serializable`接口来完成。虽然这个接口没有任何方法,但是它的存在就表明该类的对象可以被序列化。当一个对象被序列化时,其所有字段(包括私有的)都会被包含在字节流中,除非...
首先,`Serializable`接口是Java中用于实现序列化的标志接口。它没有定义任何方法,但当一个类实现了这个接口,Java的ObjectOutputStream就可以将该类的对象写入到流中。例如,`MySerializable.java`和`Product.java...
在Java开发中,序列化是一个常见的需求,它允许将对象的状态转换为字节流,以便于存储或网络传输。标准的Java序列化虽然方便,但在处理大量数据时,性能往往成为瓶颈。这时,FST(Fast Serialization Toolkit)作为...
- Java允许使用 `writeObject()` 和 `readObject()` 方法来自定义序列化和反序列化的行为,这两个方法需要在类中声明为`private`,并由`java.io.Serializable` 接口的实现类提供。 7. **序列化安全性** - 序列化...
Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...
Java对象的序列化和反序列化是Java编程中的一项重要技术,主要应用于数据持久化、网络传输等场景。本课件详细介绍了这一概念及其在实际应用中的操作。 首先,序列化是将Java对象转化为字节序列的过程,目的是为了...