java中的不可变类

Sat*_*eri 8 java reflection immutability

遵循所有java标准,我使我的类不可变

A. Defined class as final
B. declared all fields as private and final
C. No setter method
D. No method changes the state of object
E. declared all method as final
F. Safer/defencieve copying of collection/ non mutable object fields.
Run Code Online (Sandbox Code Playgroud)

这些是我在设计不可变类时所做的初步检查点.

但是还有一个问题,我的对象仍然可以通过java反射进行修改,对不对?或者我在课堂上错过了什么?

提前致谢.

das*_*ght 8

没有隐藏的反思 - 即使是不可改变的类也无法免疫.但是,你无能为力,所以"不能通过反思修改"不是不变性的标准之一.