可以使用反射获得类中的瞬态场

jav*_*eek 9 java reflection transient

可以transient使用反射获得类中的字段吗?(使用getDeclaredField(..))

Boz*_*zho 24

是的,这是一个正常的领域.您可以通过以下方式检查它是否是瞬态的

Modifier.isTransient(field.getModifiers());
Run Code Online (Sandbox Code Playgroud)

transient:Java编程语言中的一个关键字,指示字段不是对象序列化形式的一部分.当对象被序列化时,其瞬态字段的值不包括在串行表示中,而其非瞬态字段的值包括在内.

所以没有合理的理由让它无法通过反思获得.它是被忽略的字段的值(有时),而不是字段本身.

(顺便说一句,是什么阻碍了你试图打电话getDeclaredField("yourTransientField")?)