transient
“transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”。
打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命周期仅存于调用者的内存中。
如定义类:
public class People implements Serializable {
private static final long serialVersionUID = 8294180014912103005L;
/**
* 用户名
*/
private String username;
/**
* 密码
*/
private transient String password;
}
密码字段为transient,这时候如果对该对象进行序列化,这个密码字段是不会被保存的。
以下例子展示了这个行为:
public static void main(String[] args) throws Exception {
People p = new People();
p.setUsername("snowolf");
p.setPassword("123456");
System.err.println("------操作前------");
System.err.println("username: " + p.getUsername());
System.err.println("password: " + p.getPassword());
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
"people.txt"));
oos.writeObject(p);
oos.flush();
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
"people.txt"));
p = (People) ois.readObject();
ois.close();
System.err.println("------操作后------");
System.err.println("username: " + p.getUsername());
System.err.println("password: " + p.getPassword());
}
执行结果是:
------操作前------
username: snowolf
password: 123456
------操作后------
username: snowolf
password: null
transient的更多相关文章
- transient关键字的用法
本篇博客转自 一直在路上 Java transient关键字使用小记 1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,Java ...
- Java transient关键字
Volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同的线程总是看到某个成员变量的同一 ...
- Java中的关键字 transient
先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...
- transient关键字的作用
代码如下: import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutpu ...
- Transient的作用
1:transient的作用及其使用方法 当一个对象实现类Serilizable接口,那么这个类就可以被序列化,java的这种序列化的模式为开发者提供了很多的便利. 然而在实际开发中,我们常常遇到这样 ...
- java中transient关键字的作用
Java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身.这可以极大地方便网络上的一些操作,但同时,因为涉 ...
- DI中Transient Scoped Singleton Instance的区别
Observe which of the OperationId values varies within a request, and between requests. Transient obj ...
- Java transient 关键字
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2)transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被trans ...
- 序列化,反序列化和transient关键字
一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...
- @Transient注解----Hiberbate
@Transient表示该属性并非一个到数据库表的字段的映射,将会忽略该属性.如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic Exa ...
随机推荐
- ob_clean()
我在本地写的系统,部署到虚拟机上的时候,验证码出现问题不显示.加上这个函数之后,验证码出现了.具体的该学习去了.
- 集中式版本控制VS分布式版本控制
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所 ...
- 局域网访问本地localhost页面
1.关闭防火墙 2.cmd - ipconfig - IPv4 地址 . . . . . . . . . . . . : 192.168.0.34 如果链接的是wifi,请右键确保手机和电脑链接同一个 ...
- HTML5文件API
File对象与File对象 Blob对象 FileReader对象 File对象 <!DOCTYPE html> <html> <head> <meta ht ...
- BizTalk动手实验(十二)WCF-Oracle适配器使用
1 课程简介 通过本课程熟悉WCF-Oracle适配器的的使用 2 准备工作 1. 新建BizTalk空项目 2. 配置BizTalk项目的应用程序名称及程序签名. 3. Oracle数据库 ( Or ...
- 大量查询SQL语句 实例
1.查看表结构语句:DESC 表名 2.查询所有列:select * from 表名 3.查询指定列:select 字段名 form 表名 4.查询指定行:SELECT * ...
- Java - Collection 高效的找出两个List中的不同元素
如题:有List<String> list1和List<String> list2,两个集合各有上万个元素,怎样取出两个集合中不同的元素? 方法1:遍历两个集合 public ...
- Bootstrap 弹出框和警告框插件
一.弹出框 弹出框即点击一个元素弹出一个包含标题和内容的容器. //基本用法 <button class="btn btn-lg btn-danger" type=" ...
- yiii 框架登录 判断是否是游客模式及未登录状态
原地址:http://blog.csdn.net/a553181867/article/details/50987388 最近在利用Yii 2.0框架进行项目后台的编写,遇到的第一个问题是用户登陆,包 ...
- canvas 实现 柱状图
define([],function(){ var myChart={ init:function(options){ this.ctx = options.ctx; this.data = opti ...