`
jw1314
  • 浏览: 27494 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Serializable接口学习

    博客分类:
  • java
 
阅读更多
     Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。

     Object serialization主要用来支持2种主要的特性:
1。Java的RMI(remote method invocation).RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象时,就需要用到serializaiton机制来发送参数和接收返回直。
2。Java的JavaBeans. Bean的状态信息通常是在设计时配置的。Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。

    如果一个类实现了Serializable,则可以进行 writeObject(java.io.ObjectOutputStream out)进行备份,之后可以通过readObject(java.io.ObjectInputStream in)用来恢复。因此可以通过这种方法进行克隆。下面是一个clone方法的实现,
@Override
	protected Object clone() throws CloneNotSupportedException {
		try {
			// save the object to a byte array
			ByteArrayOutputStream bout = new ByteArrayOutputStream();
			ObjectOutputStream out = new ObjectOutputStream(bout);
			out.writeObject(this);
			out.close();

			// read a clone of the object from the byte array
			ByteArrayInputStream bin = new ByteArrayInputStream(
					bout.toByteArray());
			ObjectInputStream in = new ObjectInputStream(bin);
			Object ret = in.readObject();
			in.close();

			return ret;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}

这种方法进行的克隆属于深度克隆,返回的是一个全新的对像。通过Serializable方法保存对像,它的属性必须都实现了Serializable接口,不然不能进行序列化。如果属性是集合类,可以不需要实现Serializable接口,也可以序列化。
分享到:
评论

相关推荐

    PHP自定义序列化接口Serializable用法分析

    Serializable接口包含两个抽象方法:serialize() 和 unserialize()。实现Serializable接口的类必须实现这两个方法,分别用于自定义对象的序列化和反序列化过程。具体来说,当对象需要被序列化时,PHP会自动调用对象...

    序列化 serializable demo

    首先,`Serializable`接口是Java中用于实现序列化的标志接口。它没有定义任何方法,但当一个类实现了这个接口,Java的ObjectOutputStream就可以将该类的对象写入到流中。例如,`MySerializable.java`和`Product.java...

    Serializable在C#中的作用.NET 中的对象序列化

    通过本篇文章的学习,相信您已经掌握了基本序列化、选择性序列化及自定义序列化的原理与实践方法。此外,还了解了如何使用不同的序列化器以及在序列化过程中需要注意的问题。希望这些知识能帮助您在实际项目中更加...

    Parcelable与Serializable

    1. **Serializable接口** `Serializable`是Java提供的标准序列化接口,无需实现任何方法,只需在类上添加`implements Serializable`即可。对象序列化后可以写入文件或网络流。然而,`Serializable`效率较低,因为它...

    学习Java接口的例题

    在实际项目中,接口常用于定义服务合同,如`java.util.Comparator`或`java.io.Serializable`。这些接口规定了对象如何与其他对象交互,而无需关心具体实现的细节。 此外,Java 8还引入了静态接口方法,它们属于接口...

    实验一java对象串行化编程.doc

    Serializable 接口是 Java 中的一个标记接口,它不包含任何方法,但它表示该类可以被串行化。要使一个类可以被串行化,需要实现 Serializable 接口并提供一个 serialVersionUID 变量。 在实验中,我们定义了一个 ...

    Intent传递对象之Serializable和Parcelable的区别

    Intent在不同的组件中传递对象数据的应用非常普遍,大家都知道在intent传递对象的方法有两种:1、实现Serializable接口、2、实现Parcelable接口,接下来通过本文给大家介绍Intent传递对象之Serializable和Parcelable...

    AIDL 学习Demo,包含定向Tag,序列化信息通讯。

    在Android中,这意味着数据对象要么是原始类型(如int、String等),要么实现了Parcelable接口,或者是实现了Serializable接口。Parcelable接口提供了更高效的序列化方式,而Serializable接口则更为通用,但性能稍低...

    Activity之间对象传递的两种方式

    本篇文章将详细探讨在Android中Activity之间对象传递的两种主要方式:Parcelable和Serializable接口的使用。 首先,我们来理解为什么需要在Activity之间传递对象。在多Activity的应用中,可能需要在不同的Activity...

    java中的序列号和反序列化.doc

    - **`Externalizable`接口**:这是`Serializable`接口的一个子接口,它要求实现类提供两个方法`readExternal`和`writeExternal`来自定义序列化和反序列化的过程。 #### 二、序列化的具体实现方式 在Java中,对象...

    C# remoting接口实现简单示例

    接下来,我们需要创建一个实现此接口的类,并标记为`[Serializable]`,以便能够跨进程或跨网络传输: ```csharp [Serializable] public class MyRemotingClass : MarshalByRefObject, IMyRemotingInterface { ...

    C# interface学习经验浅谈

    - `attributes`:用于指定接口的特性,如`Serializable`等。 - `modifiers`:可选的修饰符,在C#中通常省略。 - `identifier`:接口的名字,命名时通常以“I”开头。 - `base-list`:可选的基接口列表,用于继承其他...

    JAVA课件(关于包和接口等的内容,异常处理,Java的输入与输出流)

    例如,`java.io.Serializable` 接口表示类的对象可以被序列化。在定义接口时,所有的方法默认都是抽象的(没有方法体)和公共的(public)。 3. 异常处理(Exception Handling): Java通过异常处理来处理程序运行...

    安卓通信接口大全

    总之,"安卓通信接口大全"是一个综合性的学习资源,涵盖了Android开发中各种组件间通信的方式,对于开发者来说,理解和掌握这些通信机制对于构建功能丰富的Android应用至关重要。而`AccessPort137`的实例则提供了...

    北京动力节点Java零基础教程006 IO流作业答案,自己写的

    Java提供标准的序列化API,主要包括java.io.Serializable接口和ObjectOutputStream及ObjectInputStream类。 使用序列化,我们可以持久化对象的状态,即使程序关闭后,再次运行时也能恢复之前的对象状态。例如,在...

    Java-se-io学习 Java学习资料源码

    9. 序列化:Java提供Serializable接口,实现该接口的类可以被序列化,保存其状态。 在这个"Java_se_io-master"资源包中,你可以找到相关的源代码示例,通过实践来深入理解和应用上述概念。源码可能涵盖了文件操作、...

    Android开发 猴子摘桃小项目——学习Activity之间的数据回传

    8. **Serializable接口**: 如果不希望实现Parcelable,也可以选择让对象实现Serializable接口,但这在性能上不如Parcelable,因为序列化和反序列化的过程较慢。 9. **安全考虑**: 在传递敏感数据时,应避免明文存储...

    android 广播,界面传值示例

    对于界面传值,通常有多种方式:Intent、Bundle、静态成员变量、Parcelable接口、Serializable接口、SharedPreferences、ContentProvider以及通过公开的方法等。在Intent中,我们可以使用putExtra()方法将数据打包,...

    Android学习笔记(十二)——使用意图传递数据的几种方式

    它们分别用于传递实现了Parcelable接口的对象列表和Serializable接口的对象列表。 6. **使用extras.putParcelableArray() 和 putSerializableArray()** 类似地,当需要传递数组时,可以使用这两个方法。 7. **...

    学习之数据存储.zip

    7. **Parcelables与Serializable**: 在Android中,如果需要将对象传递到另一个Activity或者保存在Bundle中,需要实现Parcelable接口或Serializable接口。Parcelable是更高效的选择,而Serializable则相对简单,但...

Global site tag (gtag.js) - Google Analytics