我正在创建一个复杂的数据类型。 它是ArrayLists(章节)的ArrayList(章节)。 但是,本章有两个版本,每个版本都有受尊重的元素和数据类型。
我如何声明我的复杂数据类型,以便我可以添加一个或另一个(例如,包含(chapter_typeI,chapter_typeII,chapter_typeII,chapter_typeI,chapter_typeII等...)的ArrayList(章节)?
答案 0 :(得分:2)
创建一个抽象类,从中继承这两种类型的章节,然后声明这种类型的列表。
public abstract class AbstractChapter {}
public class ChapterTypeOne extends AbstractChapter {}
public classs ChapterTypeTwo extends AbstractChapter {}
List<AbstractChapter> chapters = new ArrayList<AbstractChapter>;
您要调用的操作应该在抽象类中声明,然后在特定实现中根据需要覆盖。
答案 1 :(得分:1)
如果您定义了明确的层次结构,那么创建类型列表总是比实际对象更好。
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
答案 2 :(得分:0)
最好的方法是使用继承来定义抽象类“Chapter”,并从抽象类派生章节类型。
答案 3 :(得分:0)
你可以有一个抽象的基类“Chapter”,第一章和第二章从中继承。