私は通常、クラスの各属性を final として設定します (コンストラクター内で初期化される属性のみ)。ポイントは、テスト目的でオブジェクトのモックアップを実装していることです。このモックアップは、モックアップしているクラスを拡張し、このクラスにはいくつかの最終的な属性があります。したがって、Mockup オブジェクトのコンストラクター内で super() コンストラクターを呼び出す必要があります。ただし、通常のクラスのようにすべての属性を初期化したくないため、これはモックアップのユーティリティを壊します。super() を呼び出さずに Mockup コンストラクターを呼び出して、やりたいことをしたいと思います。
私の質問は: モックアップでクラス コンストラクターを呼び出さなければならない限り、属性を final として定義することは良い習慣ですか?
編集:いくつかのコードを追加します。この場合の問題は、私がシングルトンを使用していることです。これはテスト時に良い考えではないことを知っていますが、この場合は変更できません。したがって、私の意図は、モックアップでこのメソッドを呼び出すことではありません。
public class ReportsDataManager {
private final Map<String, List<String>> translations;
public ReportsDataManager() {
this.translations = GenericUtils.getTranslation();
}
}