永发信息网

简述transient的作用用途

答案:1  悬赏:30  手机版
解决时间 2021-11-24 04:15
简述transient的作用用途
最佳答案
1、作用:在对象序列化的时候,有些变量不需要序列化,比如密码等,可以使用transient关键字来解决这个问题,transient修饰的变量不会被序列化。
2、用法:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
//Serializable接口没有任何需要实现的方法,实现这个接口是为了声明这个对象可以序列化
public class TransientDemo implements Serializable{

private static final long serialVersionUID = 1L;
String name;
//用了transient这个关键字,这个字段就不会被序列化了
transient String password;

public TransientDemo(String name, String password) {
this.name = name;
this.password = password;
}

@Override
public String toString() {
return name + ":" + password;
}

public static void main(String[] args) {
TransientDemo td = new TransientDemo("Yinyan", "love");
try{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("log.txt"));
oos.writeObject(td);
oos.close();
}catch(Exception e){
e.printStackTrace();
}

try{
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("log.txt"));
TransientDemo td2 = (TransientDemo) ois.readObject();
System.out.println(td2);
}catch(Exception e){
e.printStackTrace();
}
}
}
输出结果为:

这段代码创建了一个对象,然后序列化这个对象,保存到log.txt这个文件中,在从log.txt这个文件读取出对象。我们发现name字段内容正常,password字段却为空。这是因为,保底保存密码风险很大,所以我们把password字段定义为不需要序列化。
另外需要说明一点,如果类实现的是Externalizable这个接口,在writeExternal方法内部手动序列化password字段的话,transient 这个关键字是不会起作用的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
lv中号手袋M40997和lv小号手袋M40155分别尺码
新时代形象设计地址在哪,我要去那里办事,
素不素炒鸡感动什么意思
2012款CR-V 你骗得我好惨!!!
我想买飞拍VR6,但不知道它的续航时间会不会
浅蓝色复古牛仔短外套怎样搭配衣服
小说:师生恋小说啊!!要完结的!!无肉不欢
吊车司机群
QQ上的红心标志怎么打出来?
PHP时区问题
买的二手房要贴墙纸,重新刷腻子多少钱,67平
我订了任我用四十元流量包,请问怎么取消
三星S7有没有红外遥控功能?
骑马与砍杀战团 8项修改器怎么用
裙长84厘米大概到腿哪里
推荐资讯
零度美发地址好找么,我有些事要过去,
我家入户门直对卫生间,怎么化解。求大神指点
泰国可以刷招行的HelloKitty信用卡吗?
手机透明壳和手机膜之间有水印怎么办?解决办
从天津大港到沧州三厂的路线
地下城堡2有必要同时用两个同样职业的s么?
求黑镜第三季第四季1080p或百度云资源谢谢!
2分之1的8倍比x的2倍少14,x是多少
这个动图出自哪里?
重庆四川习俗是一样的吗?
男友喜欢篮球,他说的K.G是指什么啊?
QlNGQl是什么摩托车
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?