为什么Java编译器会创建serialVersionUID合成字段?

Jér*_*nge 10 java field serialversionuid synthetic

作为调试应用程序的一部分,我注意到Field.getDeclaredFields()返回一些合成字段,包括serialVersionUID扩展接口的类中的字段,尽管没有扩展Serializable.

为什么编译器会添加这样的字段?

UPDATE

事实上,还有一个$VRc合成领域.

Vin*_*lds 11

Java编译器/运行时不会自动创建serialVersionUID字段.我怀疑你使用的是被指示添加无论是在运行时,或者在编译过程中合成领域的引擎盖下的某种形式的字节码阳城框架.

$VRc字段由E​​mma检测框架生成,因此这将是至少一个合成字段的原因.

当属性设置为true 时,EmmaserialVersionUID也会添加该字段instr.do_suid_compensation.