`

【转】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),它们...

    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_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语言实现的一个实用工具,旨在帮助用户管理和查找联系人信息。下面我们将...

    Java安全漫谈 - 07.反序列化篇(1)1

    Java安全领域中的反序列化漏洞是一个重要的议题,它涉及的是将对象从二进制数据恢复为程序可以理解的形式时可能存在的安全隐患。反序列化是序列化过程的逆向操作,序列化是将对象的状态转换为可存储或可传输的数据...

    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.21

    MySQL Connector/J 8.0.21 是MySQL数据库与Java应用程序之间的重要桥梁,它是一个实现了JDBC(Java Database Connectivity)接口的驱动程序,允许Java开发者在应用中无缝地连接到MySQL数据库服务器。这个驱动包是...

    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.io.Serializable序列化问题

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

    Java对象Serializable接口实现详解

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

Global site tag (gtag.js) - Google Analytics