`

java序列化和反序列化 以及transient的含义

 
阅读更多
======================================Emoloyee实体类
package JavaHeigth.serializableTest;
import java.io.Serializable;

public class Employee  implements Serializable{
private static final long serialVersionUID = 3593458869057048152L;
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  );
}
}
======================================序列化
package JavaHeigth.serializableTest;

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class SerializeDemo {
public static void main(String[] args) {
Employee e = new Employee();
e.name="kaige";
e.address="北京海淀";
e.SSN=112233;
e.number=101;
try {
FileOutputStream fos = new FileOutputStream("f://employee.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(e);
oos.close();
fos.close();
System.out.println("序列化保存在f://employee.ser中");
} catch (Exception e2) {
// TODO: handle exception
System.out.println("异常");
e2.printStackTrace();
}

}
}

=============================反序列化
package JavaHeigth.serializableTest;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class DeserializeDemo {
public static void main(String [] args)
   {
      Employee e = null;
      try
      {
         FileInputStream fileIn = new FileInputStream("f://employee.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         e = (Employee) in.readObject();
         in.close();
         fileIn.close();
      }catch(IOException i)
      {
         i.printStackTrace();
         return;
      }catch(ClassNotFoundException c)
      {
         System.out.println("Employee class not found");
         c.printStackTrace();
         return;
      }
      System.out.println("Deserialized Employee...");
      System.out.println("Name: " + e.name);
      System.out.println("Address: " + e.address);
      System.out.println("SSN: " + e.SSN);
      System.out.println("Number: " + e.number);
   }
}

SSN=0;原因是transient  变量不能被序列化
分享到:
评论

相关推荐

    什么是Java的序列化和反序列化?如何实现对象的序列化和反序列化?(java面试题附答案).txt

    通过实现 Serializable 接口,Java对象可以被序列化和反序列化。序列化可以将对象转换为字节流,以便于存储或传输。反序列化则可以将字节流重新转换为原始对象。需要注意的是,序列化和反序列化的类必须具有相同的 ...

    深入分析Java的序列化与反序列化

    本文通过分析ArrayList的序列化来介绍Java序列化的相关内容。主要涉及到以下几个问题:  怎么实现Java的序列化  为什么实现了java.io.Serializable接口才能被序列化  transient的作用是什么  怎么自定义序列...

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入理解Java虚拟机-Java内存区域透彻分析(序列化、反序列化概念及其使用场景+实现序列化的方式+transient关键字)

    深入探索Java对象的序列化

    深入探索Java对象的序列化 对象序列化就是把对象写入到输出流中,用来存储或者传输。...实现了序列化接口的类,如果其成员不需要序列化进去,则使用transient关键字进行修饰。 下面给出个例子:

    Java transient关键字与序列化操作实例详解

    主要介绍了Java transient关键字与序列化操作,结合实例形式详细分析了java序列化操作相关实现方法与操作注意事项,需要的朋友可以参考下

    Java 序列化的高级认识1

    Transient 关键字的作用是控制变量的序列化,在变量声明前加上该关键字,可以阻止该变量被序列化到文件中,在被反序列化后,transient 变量的值被设为

    java 对象默认序列化的干预方法

    4.1:将某个成员变量字段加transient(可跳过的),序列化的时候该字段信息就为空比如 1.public class Person implements Serializable { 2. ... 22. private String name = null; 23.  24. ...

    Java关键字—-transient

    本篇文章序列化、反序列化用的类是同一个类,可以通过注释main中1然后修改Stu类实现有无transient关键字修饰、serialVersionUID是否不同,得到以下结果: 1、serialVersionUID的数值大小不会影响序列化后的字节数...

    Java transient关键字使用小记

    这个对象可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。  然而在实际开发过程中,...

    J2SE中的序默认序列化

    要保存的也被保存了下来。一般情况下,我们仅仅需要保存逻辑... } 则company_flag字段将不会参与序列化与反序列化,但同时你也增加了为他初始值的责任。这也是序列化常常导致的问题之一。因为序列化相当于一个只接受数

    举例浅谈Java关键词transient的使用

    控制序列化IO的类 import java.io.*; public class PersonMapper { private PersonMapper() {} private static PersonMapper mapper; /** * 获取单例 * @return 单例 */ public static PersonMapper ...

    java8集合源码-Java:Java

    Java中序列化和反序列化的区别。 什么是SerialVersionUID? 内部类和子类的区别。 JSON 相对于 XML 的优势是什么? 我们可以两次导入相同的包/类吗? JVM 会在运行时加载包两次吗? 静态加载和动态类加载的区别? ...

    java面试题

    65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 66.1.1. 传统的类型转换。 49 66.1.2. 通过Class...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】Java序列化与反序列化 27 为什么需要序列化与反序列化 28 如何实现Java序列化与反序列化 28 【基础】String s = new String("xyz");创建了几个字符串对象 30 【基础】接口是否可继承(extends)接口?抽象类...

    leetcode题库-java-interview:Java研发基础相关

    序列化与反序列化 transient 枚举 注解 JDK7新特性 JDK8新特性 JDK9新特性 JDK10新特性 运行时数据区 对象 OOM & SOF 内存模型 垃圾回收算法 垃圾收集器 内存分配与回收策略 类加载 参数优化 进程与线程的区别 进程...

    ArrayList、Vector、LinkedList 的区别.docx

    同时,三个类都实现了 Cloneable 接口,支持调用 Object.clone 方法返回该对象的浅拷贝,和 java.io.Serializable 接口,支持序列化和反序列化。 在底层数据结构方面,ArrayList 和 Vector 都使用数组结构来存储...

    java8集合源码分析-Outline:大纲

    反序列化(, , , ) interface 和 abstract class 区别 变长参数( ) 枚举详解(, , , , ) Null详解() Java 8 默认方法() 集合类(底层实现原理,实现类的优缺点) List ArrayList(, ) LinkedList(, ) Map(,) Hashtable() ...

    整理后java开发全套达内学习笔记(含练习)

    序列化,串行化 ['siәriәlaiz]'(serializable adj.)(deserialize反序列化,反串行化) Socket [java] 网络套接字['sɒkit] stack n.堆栈 [stæk] (对应 heap 堆) statement 程序语句; 语句 ['steitmәnt]' n. 陈述,...

Global site tag (gtag.js) - Google Analytics