java语言

java序列化的方法有哪些

时间:2024-10-06 03:54:50 java语言 我要投稿
  • 相关推荐

java序列化的方法有哪些

  简介

  将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化,也就是说,对象的类型信息、对象的数据,还有对象中的数据类型可以用来在内存中新建对象。

  整个过程都是Java虚拟机(JVM)独立的,也就是说,在一个平台上序列化的对象可以在另一个完全不同的平台上反序列化该对象。

  类ObjectInputStream 和ObjectOutputStream是高层次的数据流,它们包含序列化和反序列化对象的方法。

  ObjectOutputStream 类包含很多写方法来写各种数据类型,但是一个特别的方法例外:

  public final void writeObject(Object x) throws IOException

  上面的方法序列化一个对象,并将它发送到输出流。相似的ObjectInputStream 类包含如下反序列化一个对象的方法:

  public final Object readObject() throws IOException, ClassNotFoundException

  该方法从流中取出下一个对象,并将对象反序列化。它的返回值为Object,因此,你需要将它转换成合适的数据类型。

  演示序列化

  为了演示序列化在Java中是怎样工作的,我将使用之前教程中提到的Employee类,假设我们定义了如下的Employee类,该类实现了Serializable 接口。

  public class Employee implements java.io.Serializable{ public String name; public String address; public transient int SSN; public int number; public void mailCheck() { System.out.println("Mailing a check to " + name + " " + address); }}

  请注意,一个类的对象要想序列化成功,必须满足两个条件:

  该类必须实现 java.io.Serializable 对象。

  该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。

  如果你想知道一个Java标准类是否是可序列化的,请查看该类的文档。检验一个类的实例是否能序列化十分简单, 只需要查看该类有没有实现java.io.Serializable接口。【相关阅读】

  什么是java多态

  简介

  多态是同一个行为具有多个不同表现形式或形态的能力。

  多态性是对象多种表现形式的体现。

  比如我们说"宠物"这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说"请给我一只宠物",服务员给我小猫、小狗或者蜥蜴都可以,我们就说"宠物"这个对象就具备多态性。

  接下来让我们通过实例来了解Java的多态。

  例子

  public interface Vegetarian{}public class Animal{}public class Deer extends Animal implements Vegetarian{}

  因为Deer类具有多重继承,所以它具有多态性。以上实例解析如下:

  一个 Deer IS-A(是一个) Animal

  一个 Deer IS-A(是一个) Vegetarian

  一个 Deer IS-A(是一个) Deer

  一个 Deer IS-A(是一个)Object

  在Java中,所有的对象都具有多态性,因为任何对象都能通过IS-A测试的类型和Object类。

  访问一个对象的唯一方法就是通过引用型变量。

  引用型变量只能有一种类型,一旦被声明,引用型变量的类型就不能被改变了。

  引用型变量不仅能够被重置为其他对象,前提是这些对象没有被声明为final。还可以引用和它类型相同的或者相兼容的对象。它可以声明为类类型或者接口类型。

  当我们将引用型变量应用于Deer对象的引用时,下面的声明是合法的:

  Deer d = new Deer();Animal a = d;Vegetarian v = d;Object o = d;

  所有的引用型变量d,a,v,o都指向堆中相同的Deer对象。

【java序列化的方法有哪些】相关文章:

Java编程节省内存的方法有哪些08-10

java序列化对象的技巧09-30

java反序列化对象的技巧08-29

如何理解Java对象的序列化09-26

Java语言的优点有哪些08-15

java基础语言有哪些09-12

Java未来的发展方向有哪些06-20

Java常见误区与细节有哪些呢08-05

招聘面试的方法有哪些05-23

Java语言的作用域有哪些及分类知识08-07