Java中的transient关键字
来源:互联网 发布:外盘期货数据接口api 编辑:程序博客网 时间:2024/06/06 01:02
关键字介绍
一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个的所有属性和方法都会自动序列化。但是有种情况是有些属性是不需要序列号的,所以就用到这个关键字。只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。
代码:
实现Serializable接口的UserInfo类,并且有一个transient关键字修饰的属性
- package com.testtransient.model;
- import java.io.Serializable;
- public class UserInfo implements Serializable {
- private static final long serialVersionUID = 1L;
- private String name ;
- private transient String pwd ;
- public UserInfo(String name,String pwd){
- this.name =name;
- this.pwd =pwd;
- }
- public String toString(){
- return “name=” +name +“,psw=” +pwd ;
- }
- }
package com.testtransient.model;import java.io.Serializable;public class UserInfo implements Serializable { private static final long serialVersionUID = 1L; private String name ; private transient String pwd ; public UserInfo(String name,String pwd){ this.name =name; this.pwd =pwd; } public String toString(){ return "name=" +name +",psw=" +pwd ; }}
通过输入输出流编写的测试程序
- public class TestTransient {
- public static void main(String[] args) {
- UserInfouserInfo = new UserInfo(“张三” , “123456” );
- System. out.println(userInfo);
- try {
- // 序列化,被设置为transient的属性没有被序列化
- ObjectOutputStreamo = new ObjectOutputStream(new FileOutputStream(
- ”UserInfo.out”));
- o.writeObject(userInfo);
- o.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- try {
- // 重新读取内容
- ObjectInputStream in = new ObjectInputStream( new FileInputStream(
- ”UserInfo.out”));
- UserInforeadUserInfo = (UserInfo) in.readObject();
- // 读取后psw的内容为null
- System. out.println(readUserInfo.toString());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
public class TestTransient { public static void main(String[] args) { UserInfouserInfo = new UserInfo("张三" , "123456" ); System. out.println(userInfo); try { // 序列化,被设置为transient的属性没有被序列化 ObjectOutputStreamo = new ObjectOutputStream(new FileOutputStream( "UserInfo.out")); o.writeObject(userInfo); o.close(); } catch (Exception e) { e.printStackTrace(); } try { // 重新读取内容 ObjectInputStream in = new ObjectInputStream( new FileInputStream( "UserInfo.out")); UserInforeadUserInfo = (UserInfo) in.readObject(); // 读取后psw的内容为null System. out.println(readUserInfo.toString()); } catch (Exception e) { e.printStackTrace(); } }
运行结果:
从上面结果能够看出来经过transient关键字修饰的字段是不能够被序列化的。
阅读全文
0 0
- Java中的transient关键字
- java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- java中的Transient关键字
- Java中的transient关键字
- Java中的关键字 transient
- Java中的关键字transient
- Java中的transient关键字
- Java中的transient关键字
- Java中的transient关键字
- java中的transient关键字
- RocketMQ双Master模式环境搭建
- 续行符小记
- 牛客网-剑指offer-13-调整数组顺序使奇数位与偶数之前
- c++封装(上)
- 虚拟机下CentOS7开启SSH连接
- Java中的transient关键字
- 第二周项目三-体验复杂度
- 【python】图形用户界面入门:EasyGui学习超详细版
- 王者荣耀:从程序员的角度解密王者荣耀,专业术语把院长看懵了
- 【牛客 题库】 virtual 函数 求输出结果
- MFC一一添加WM_USER自定义消息
- 牛客网-剑指offer-14-打印一个链表的倒数第k个节点
- 2017招 银 编程题
- ajax同步异步和使用a链接