可以transient
使用反射获得类中的字段吗?(使用getDeclaredField(..)
)
问问题
6864 次
4 回答
26
是的,这是一个正常的领域。您可以通过以下方式检查它是否是瞬态的:
Modifier.isTransient(field.getModifiers());
瞬态:Java 编程语言中的关键字,表示字段不是对象的序列化形式的一部分。当一个对象被序列化时,它的瞬态字段的值不包括在序列表示中,而它的非瞬态字段的值被包括在内。
因此,没有任何逻辑理由不能通过反射访问它。(有时)被忽略的是字段的值,而不是字段本身。
(顺便说一句,是什么阻碍了您尝试打电话getDeclaredField("yourTransientField")
?)
于 2010-02-13T06:45:16.480 回答
3
transient
表示该字段不会被序列化。该字段仍然由类声明,因此它是反射的公平游戏。
于 2010-02-13T06:49:11.663 回答
2
在所有需要序列化的对象中,有一些不需要序列化。这就是为什么这个对象用关键字transient标记的原因。
于 2011-12-15T10:09:46.710 回答
0
transient
场与反射无关。该关键字仅表示在Java 序列化过程中应跳过字段。因此反射可以transient
像访问任何其他字段一样访问字段。
于 2012-11-04T10:01:56.783 回答