Java中关键字transient的大白话简介说明
下文笔者讲述transient关键字的功能简介说明,如下所示
transient关键字的功能
被修饰的成员属性变量不被序列化 即不被序列化 transient关键字的使用场景: 1.类中的字段值可以根据其它字段推导出来 如: 一个数的和由两个字段组成,那么数字的和,则无需序列化 2.指定无需序列化的字段
transient关键字的示例
package com.java265; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; class Rectangle implements Serializable{ private static final long serialVersionUID = 1710022455003682613L; private Integer width; private Integer height; private transient Integer area; public Rectangle (Integer width, Integer height){ this.width = width; this.height = height; this.area = width * height; } public void setArea(){ this.area = this.width * this.height; } @Override public String toString(){ StringBuffer sb = new StringBuffer(40); sb.append("width : "); sb.append(this.width); sb.append("\nheight : "); sb.append(this.height); sb.append("\narea : "); sb.append(this.area); return sb.toString(); } } public class TransientExample{ public static void main(String args[]) throws Exception { Rectangle rectangle = new Rectangle(3,4); System.out.println("1.原始对象\n"+rectangle); ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("rectangle")); // 往流写入对象 o.writeObject(rectangle); o.close(); // 从流读取对象 ObjectInputStream in = new ObjectInputStream(new FileInputStream("rectangle")); Rectangle rectangle1 = (Rectangle)in.readObject(); System.out.println("2.反序列化后的对象\n"+rectangle1); rectangle1.setArea(); System.out.println("3.恢复成原始对象\n"+rectangle1); in.close(); } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。