private transient(一)

前言

现在想获取参数的一个方法的返回类型。但是经过调试,发现这个类型是一个在接口的实现类里面定义的一个参数,并且该参数通过private transient进行了修饰。
现在的情况是,可以看到它,但是想用的时候获取不到。
代码截图如下:
通过断点调试,可以看到invocation里面有resuleType这个参数,并且有值
在这里插入图片描述

我想获取invocation里面的request或者resultTypes
在这里插入图片描述
查看这个类,发现是它是一个接口,并且它没有定义这两个参数
在这里插入图片描述
找了半天,找到了它的实现类。发现在里面有定义这两个参数(找到了resultType,没有看到request。但是这已经足够了,因为我只需要resultType)
在这里插入图片描述
下面想办法获取到它

认识通过 private transient 修饰的参数

几篇文章结合起来,差不多就明白什么意思了。

理解

下面是从上面文章抽取出来的内容
第一部分 ~来自文档1
Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。
transient是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。当一个对象被串行化的时候,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。

第二部分 ~来自文档2
“transient”——bai“瞬态”,先不说这du个翻译是否恰当,这个变量zhi关键字一直不曾使用,简单的说dao就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”。
打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安全起见,不希望在网络操作(主要涉及到序列化操作,本地序列化缓存也适用)中被传输。这些信息对应的变量就可以被定义为transient类型。换句话说,这个字段的生命周期仅存于调用者的内存中。

第三部分 ~来自文档3
java 的transient关键字的作用是bai需要实现Serilizable接口,将不du需要序列zhi化的属性前添加关dao键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。

代码中使用通过 private transient 修饰的参数

看了一些文档,这时候随便试了下强制转换。
在这里插入图片描述
在这里插入图片描述

可以看到里面是有值的,并且也没有报错。所以到这一步,就算成功了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值