我想确保给定的一组对象是不可变的。
我在想一些类似的事情:
- 检查是否每个字段都是 private final
- 检查类是否是final
- 检查可变成员
所以我想我的问题是:3. 可能吗?
我可以递归地检查一个类的每个成员是否都有它的字段 private final
,但这还不够,因为一个类可以有一个名为 getHaha(param)
的方法例如,它将给定的参数添加到数组中。
那么有没有一种好的方法来检查一个对象是否是不可变的或者它是否可能?
谢谢,
最佳答案
你可能想看看这个项目:
这个库试图分析特定类的字节码,以发现它是否是不可变的。它允许在单元测试中测试此条件,如可用视频中所示 here .它当然不是完美的(字符串字段将被认为是可变的,并且您的数组示例处理不当)但它比 FindBugs 提供的更复杂(即仅检查每个字段是否为最终字段)。
免责声明:我写了 ;-)
关于java - 对象不变性的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6743872/