カプセル化を壊さずにこれを行う方法があるかどうか疑問に思っています。抽象クラスは、実装するサブクラスで定義されたパラメーターに依存する必要があります。そのようです:
public abstract class Parent {
private int size;
private List<String> someList;
public Parent() {
size = getSize();
someList = new ArrayList<String>(size);
}
public abstract int getSize();
}
public class Child extends Parent {
@Override
public int getSize() {
return 5;
}
}
これは醜いですか?より良い方法はありますか?そしておそらくもっと重要なことは、これは良い考えでしょうか?
編集:
クラスはフレームワークのコンテキストで作成されるため、デフォルトのパラメーターなしのコンストラクターが常に呼び出されます (実際、Parent クラスは別のクラスを拡張します)。size パラメーターは説明目的で使用されているだけであり、List の実装に使用する予定はありません。