`

【转】Java的Serializable处理 - 皇马啸西风的一亩三分地 - JavaEye技术网站

阅读更多

Java的Serializable处理

关键字: java serializable

   java继承serislizable接口,简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。实现了Java对象的序列化。

在一下情况可以考虑使用序列化:
    a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;
    b)当你想用套接字在网络上传送对象的时候;
    c)当你想通过RMI传输对象的时候;

示例:

Java代码 复制代码

  1. public class Order implements java.io.Serializable {   
  2. private Long id;   
  3. private String code;   
  4. private String name;   
public class Order implements java.io.Serializable {
	private Long id;
	private String code;
	private String name;
}

将order对象写入流中:

Java代码 复制代码

  1. public InputStream getOrderInfoAsStream(Order order) {   
  2.         InputStream ret = null;   
  3.         ByteArrayOutputStream baos = null;   
  4.         ObjectOutputStream ous = null;   
  5. if (order == null) {   
  6. return ret;   
  7.         }   
  8. try {   
  9.                                            baos = new ByteArrayOutputStream();   
  10.                    ous = new ObjectOutputStream(baos);   
  11.                                ous.writeObject(order);   
  12.                    ret = FileUtil.getInputStreamFromBytes(baos.toByteArray());   
  13.         } catch (Exception e) {   
  14.             e.printStackTrace();   
  15.         } finally {   
  16. try {   
  17. if (baos != null) {   
  18.                     baos.close();   
  19.                 }   
  20. if (ous != null) {   
  21.                     ous.close();   
  22.                 }   
  23.             } catch (Exception e) {   
  24.             }   
  25.         }   
  26. return ret;   
  27.     } 
public InputStream getOrderInfoAsStream(Order order) {
		InputStream ret = null;
		ByteArrayOutputStream baos = null;
		ObjectOutputStream ous = null;

		if (order == null) {
			return ret;
		}
		try {
                                           baos = new ByteArrayOutputStream();
		           ous = new ObjectOutputStream(baos);
	                           ous.writeObject(order);

		           ret = FileUtil.getInputStreamFromBytes(baos.toByteArray());

			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (baos != null) {
					baos.close();
				}
				if (ous != null) {
					ous.close();
				}
			} catch (Exception e) {
			}
		}
		return ret;
	}

将对象从流中读出:

Java代码 复制代码

  1. public Order getOrder(InputStream is) {   
  2.         Order ret = null;   
  3.         ObjectInputStream ois = null;   
  4. try {   
  5. if (is != null) {   
  6.                 ois = new ObjectInputStream(is);   
  7.                 ret = (Order) ois.readObject();   
  8.             }   
  9.         } catch (Exception e) {   
  10.             e.printStackTrace();   
  11.         } finally {   
  12. try {   
  13. if (ois != null) {   
  14.                     ois.close();   
  15.                 }   
  16.             } catch (Exception e) {   
  17.             }   
  18.         }   
  19. return ret;   
  20.     } 

Java的Serializable处理 - 皇马啸西风的一亩三分地 - JavaEye技术网站

分享到:
评论

相关推荐

    java->serializable深入了解

    java->serializable深入了解 java->serializable深入了解 java->serializable深入了解

    java对象序列化Demo------------Serializable

    java 序列化 对象 Serializable 写着玩的Demo 简单 实用

    Laravel开发-serializable-values

    3. 错误处理:提供异常处理机制,当遇到无法序列化或反序列化的值时,能够优雅地处理错误。 4. 性能优化:通过高效的算法和策略,减少序列化和反序列化的时间开销。 5. 安全性增强:可能包括对敏感数据的加密处理,...

    java serializable 序列化与反序列化

    Java的序列化与反序列化是Java开发中的一项重要技术,它允许我们将对象的状态转换为字节流,以便存储或在网络上传输。`Serializable`接口是Java提供的一个标记接口,用于实现对象的序列化。当一个类实现了这个接口,...

    java输入输出--java实例17例

    在这个“java输入输出--java实例17例”中,我们可以期待学习到一系列关于Java I/O的实用示例代码。 1. **基础流与缓冲流**:Java的基础流包括字符流(Reader和Writer)和字节流(InputStream和OutputStream),它们...

    java.io.Serializable序列化问题

    ### Java.io.Serializable 序列化问题详解 #### 一、序列化的概念与作用 在 Java 编程语言中,序列化是一种将对象的状态(即成员变量的值)转换为可以存储或传输的形式的过程。通常,这种形式是字节流,但也可以是...

    Java_Serializable(序列化)的理解和总结

    ### Java Serializable(序列化)的理解和总结 #### 一、序列化的定义与目的 序列化是一种将对象的状态转换为可以存储或传输的形式的过程。在Java中,如果一个类实现了`Serializable`接口,那么该类的对象就可以被...

    java-bean-Date.rar_date

    Java Bean是一种特殊的Java类,它遵循特定的编程和设计规范,主要用于组件开发,尤其是在Java Swing图形用户界面(GUI)中。这些组件可以被其他Java应用程序重用,增强了代码的可复用性和互操作性。在给定的"java-...

    MySql转Java实体类

    MySQL是一个广泛应用的关系型数据库管理系统,而Java是一种广泛用于开发后端服务的编程语言。当我们在用Java处理数据库相关业务时,经常需要将MySQL数据库中的表结构映射到Java对象,即实体类(Entity Class),以便...

    java语言编写---通讯录源代码

    Java语言是一种广泛应用于开发各种类型软件的面向对象的编程语言,尤其在企业级应用和Web应用领域中占有重要地位。本通讯录源代码是利用Java语言实现的一个实用工具,旨在帮助用户管理和查找联系人信息。下面我们将...

    mysql-connector-java-8.0.2下载

    1. 将`mysql-connector-java-8.0.26.jar`文件添加到项目的类路径中,或者如果你使用的是Maven或Gradle,可以在pom.xml或build.gradle文件中添加相应的依赖。 2. 创建数据库连接,例如: ```java import java.sql....

    java全栈工程师-java io

    ### Java IO概述 Java IO(Input/Output)是Java编程...随着技术的发展,Java IO也在不断地演进和完善,例如NIO(New IO)和AIO(Asynchronous IO)等新技术的引入,使得Java IO能够更好地适应现代高性能计算的需求。

    java----java面试

    根据给定文件的信息,我们可以提炼出以下与Java面试相关的知识点: ### 1. 浮点类型赋值 在Java中,对于浮点类型的赋值,需要注意类型匹配问题。例如: - `float f = 3.4` 这样的写法是不正确的,因为3.4默认为`...

    基于java的P2P--多用户在线聊天室(Java源码).zip

    在本项目中,"基于Java的P2P--多用户在线聊天室"是一个实现多人实时通信的系统,它利用了Java编程语言的强大功能以及P2P(对等网络)架构来构建。P2P网络是一种分布式网络模型,其中每个参与者(节点)既是服务消费...

    ON JAVA中文版-精读PPT

    《ON JAVA中文版-精读PPT》是一个深入解析Java编程语言的资源,它通过精心设计的PPT形式,提炼了书籍中的核心知识点,旨在帮助读者高效地理解和掌握Java编程技术。作为一款软件/插件学习资料,这个PPT涵盖了Java语言...

    mysql-connector-java-8.0.16.zip

    MySQL Connector/J 8.0.16 是 MySQL 数据库与 Java 应用程序之间的关键桥梁,它是一...通过这个压缩包提供的 `mysql-connector-java-8.0.16.jar` 文件,你可以轻松地将其集成到你的项目中,享受最新的 MySQL 连接功能。

    Serializable-master.zip

    - 调用`ObjectOutputStream.writeObject()`:通过`ObjectOutputStream`的`writeObject()`方法将对象写入输出流,这个过程会递归地处理对象的所有属性,包括引用的对象。 - 写入`serialVersionUID`:在序列化过程中...

    Java对象Serializable接口实现详解

    Java中的Serializable接口是java.io包中定义的,用于实现Java类的序列化操作而提供的一个语义级别的接口。Serializable序列化接口没有任何方法或者字段,只是用于标识可序列化的语义。实现了Serializable接口的类...

    java利用json-lib操作json

    json-lib还提供了许多其他功能,如JSON对象的操作、JSONPath查询等,可以帮助开发者更加灵活地处理JSON数据。 总结起来,json-lib库为Java开发者提供了一种简单易用的方式来处理JSON数据,包括将Java对象转换为JSON...

    Serializable java序列号

    Java序列化是Java平台提供的一种持久化机制,它允许我们将一个对象的状态转换成字节流,以便存储到磁盘上或者在网络中进行传输。这个过程称为对象的序列化,而相反的过程,将字节流恢复为原来的对象状态,称为反序列...

Global site tag (gtag.js) - Google Analytics