`
BradyZhu
  • 浏览: 247014 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Transient关键字在Java对象序列化中的作用

 
阅读更多

在对象序列化的时候,有些变量比如密码等等,你需希望他去序列化,否则别人就可以通过字节流来回复数据得到你的private的数据,这样是一个很危险的问题,下面使用关键字Transient 来解决这个问题,他的意思就是不需要虚拟机去序列化这个变量,我会自己去处理

package com.bird.thinking;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Date;

/**
 * @use  transient关键字实现对指定变量的非序列化
 * @author Bird
 *
 */
public class Login implements Serializable{
	private Date date = new Date();
	private String username;
	private transient String password;//注意transient关键字的运用
	
	public Login(String name, String pwd){
		username = name;
		password = pwd;
	}
	
	public String toString(){
		return "Login info: \n    username:  " + username + "\n date:  " + date +  "\n  password " + password;
	}
	
	public static void main(String [] args) throws Exception{
		Login a = new Login("Bird", "Hehe");
		System.out.println("Login a = a" + a);
		ObjectOutputStream o = new ObjectOutputStream(new FileOutputStream("d://login.out"));
		o.writeObject(a);
		o.close();
		Thread.sleep(500);
		//Now  Get Back
		ObjectInputStream in = new ObjectInputStream(new FileInputStream("d://login.out"));  
		System.out.println("recovering  object  at "  + new Date());
		a = (Login)in.readObject();
		System.out.println("Login a = " + a);
	}
}


运行结果为

Login a = aLogin info: 
username:  Bird
date:  Sun Oct 23 15:38:51 CST 2011
password Hehe
recovering  object  at Sun Oct 23 15:38:52 CST 2011
Login a = Login info: 
username:  Bird
date:  Sun Oct 23 15:38:51 CST 2011
password null


分享到:
评论

相关推荐

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

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

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

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

    深入探索Java对象的序列化

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

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

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

    Java transient关键字使用小记

     我们都知道一个对象只要实现了Serilizable接口,这个对象可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和...

    Java关键字—-transient

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

    Java 序列化的高级认识1

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

    J2SE中的序默认序列化

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

    java8集合源码-Java:Java

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

    java面试题

    65. 什么是java序列化,如何实现java序列化? 48 65.1. java序列化、反序列化 48 65.2. 对象的序列化主要有两种用途: 48 65.3. 对象序列化包括如下步骤: 49 65.4. 对象反序列化的步骤如下: 49 66. 反射机制 49 ...

    java8stream源码-java8-cert:一些用于练习Java8OCP的代码

    transient关键字(=“不应序列化字段”) 可变参数 字符串生成器 instanceof确切行为(在接口上使用null和用法) 包和导入(静态导入,重要的java.*包) 更多关键词: synchronized 、 transient 、 native 回顾:...

    队列分享-易群1

    // 条件队列的第一个节点// 不要管这里的关键字 transient,是不参与序列化的意思private transient Node firstWaiter

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

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

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

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

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

    程序员面试刷题的书哪个好-javonical:规范Java技术测试

    程序员面试刷题的书哪个好Javonical 作为一名专业的自由程序员,我参加了(并进行了)我应得的 Java 技术测试。 它们通常是申请职位时的第一步,因此您必须确保熟悉预期的答案。...阻止该字段被序列化。

Global site tag (gtag.js) - Google Analytics