我正在创建一个复杂的数据类型。它是 ArrayLists(章节)的 ArrayList(章节)。但是,该章有两个版本,每个版本都有其所推崇的元素和数据类型。
我如何声明我的复杂数据类型,以便我可以添加一个或另一个(例如,ArrayList(chapters) 包含(chapter_typeI、chapter_typeII、chapter_typeII、chapter_typeI、chapter_typeII 等...)?
我正在创建一个复杂的数据类型。它是 ArrayLists(章节)的 ArrayList(章节)。但是,该章有两个版本,每个版本都有其所推崇的元素和数据类型。
我如何声明我的复杂数据类型,以便我可以添加一个或另一个(例如,ArrayList(chapters) 包含(chapter_typeI、chapter_typeII、chapter_typeII、chapter_typeI、chapter_typeII 等...)?
创建一个抽象类,两种类型的章节都从该类继承,然后声明该类型的列表。
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.
}
}
您也可以使用 Abstract Skeletal 模式,如果需要,您可以在其中使用具有默认实现的 AbstractType 类
你可以有一个抽象基类“Chapter”,ChapterI 和ChapterII 从中继承。
最好的方法是使用继承定义一个抽象类“Chapter”,并从抽象类中派生出章节的类型。