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

可以使用reflection获得类中的transient场吗? (使用getDeclaredField(..)

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

 Modifier.isTransient(field.getModifiers()); 

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

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

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

transient表示该字段不会被序列化。 这个领域仍然由class级宣布,所以这是一个公平的反思游戏。

在需要序列化的所有对象中,有一些不需要序列化。 这就是为什么这个对象用关键字transient标记的原因。

transient场与reflection无关。 关键字仅表示在Java序列化过程中应跳过字段。 因此,reflection可以像任何其他字段一样访问transient字段。