我通常将类的每个属性设置为 final(仅适用于将在构造函数中初始化的属性)。关键是我现在正在实现一个用于测试目的的对象模型。这个 Mockup 扩展了它正在模拟的类,并且这个类具有一些最终属性。因此,我不得不在 Mockup 对象的构造函数中调用 super() 构造函数。然而,这破坏了 Mockup 的实用性,因为我不希望它以普通类的方式初始化所有属性。我宁愿调用 Mockup 构造函数而不调用 super() 并做任何我想做的事情。
我的问题是:将属性定义为 final 是否是一种好习惯,只要它们会强制您在 Mockup 中调用类构造函数吗?
编辑:我添加了一些代码。这种情况下的问题是我使用的是单例,我知道在测试时这不是一个好主意,但在这种情况下我无法更改它。所以我的意图不是在 Mockup 中调用这个方法。
public class ReportsDataManager {
private final Map<String, List<String>> translations;
public ReportsDataManager() {
this.translations = GenericUtils.getTranslation();
}
}