0

我的问题很简单。我正在尝试制作一个用于构建图表的构建器。图表数据将由对象填充,具体取决于我的程序员同事创建的程序因此,我使用了一个调用接口ObjectInterface来确保对象始终具有某些方法。

我的问题是,如果我想将这些对象(我不知道是哪种类型)添加到 ArrayList 中,是否可以像这样添加它们:

ArrayList<ObjectInterface> data = new ArrayList<ObjectInterface>();
ObjectType Test = new ObjectType("Test");
data.add(test);

在本例中,ObjectType 是一个实现ObjectInterface

这合法吗?

4

3 回答 3

3

IfObjectTypeObjectInterfacethen 的子类型(或实现)是合法的。你没有Java编译器吗?它会回答你所有的“这是合法的”类型的问题;)

于 2012-12-14T15:48:43.117 回答
2

是的,这是合法的。您可以将 的子类型(ObjectInterface例如 , )添加ObjectTypeArrayList<ObjectInterface>

于 2012-12-14T15:47:29.073 回答
2

是的,你的例子很好。

此外,我认为这是一个非常好的设计。@duffymo 建议的进一步改进是List在左侧使用:

List<ObjectInterface> data = new ArrayList<ObjectInterface>();

这种方式data是根据抽象列表接口声明的,而不是根据具体列表实现来声明的。

于 2012-12-14T15:48:07.530 回答