使用Interface作为列表中的参数

时间:2012-12-14 15:46:17

标签: java object interface

我的问题很简单。我试图建立一个建筑图表的建设者。图表数据将由对象填充,具体取决于我的程序员创建的程序。因此,我使用了一个名为ObjectInterface的接口来确保对象始终具有某些方法。

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

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

在此示例中,ObjectType是实现ObjectInterface

的对象 这是合法的吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

是的,你的例子非常好。

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

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

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