複雑なデータ型を作成しています。これは、ArrayLists(章)のArrayList(章)です。ただし、この章には2つのバージョンがあり、それぞれが尊重される要素とデータ型を備えています。
複雑なデータ型を宣言して、(たとえば、(chapter_typeI、chapter_typeII、chapter_typeII、chapter_typeI、chapter_typeIIなど)を含むArrayList(chapters)を追加できるようにするにはどうすればよいですか?
複雑なデータ型を作成しています。これは、ArrayLists(章)のArrayList(章)です。ただし、この章には2つのバージョンがあり、それぞれが尊重される要素とデータ型を備えています。
複雑なデータ型を宣言して、(たとえば、(chapter_typeI、chapter_typeII、chapter_typeII、chapter_typeI、chapter_typeIIなど)を含むArrayList(chapters)を追加できるようにするにはどうすればよいですか?
両方のタイプのチャプターが継承する抽象クラスを作成してから、このタイプのリストを宣言します。
public abstract class AbstractChapter {}
public class ChapterTypeOne extends AbstractChapter {}
public classs ChapterTypeTwo extends AbstractChapter {}
List<AbstractChapter> chapters = new ArrayList<AbstractChapter>;
呼び出す操作は、抽象クラスで宣言してから、特定の実装で必要に応じてオーバーライドする必要があります。
明確な階層が定義されている場合は、実際のオブジェクトよりもタイプのリストを作成することをお勧めします。
List<Type> list = new ArrayList<Type>();
これで、Typeをインターフェースにすることができます
interface Type {
void method();
}
今、あなたは持つことができます
SubType1 implements Type {
void method() {
// do something.
}
}
SubType2 implements Type {
void method() {
// do something.
}
}
また、必要に応じて、デフォルトの実装でクラスAbstractTypeを持つことができるAbstractSkeletalパターンを使用できます。
最良の方法は、継承を使用して抽象クラス「Chapter」を定義し、抽象クラスからチャプターのタイプを派生させることです。
ChapterIとChapterIIが継承される抽象基本クラス「Chapter」を持つことができます。