2012-12-14 49 views
0

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

我的问题是,如果我想要这些对象(即我不知道哪种类型的)到一个ArrayList是有可能将它们添加像这样的:在这个例子中

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

的对象类型是一个实现ObjectInterface的对象

这是合法的吗?

回答

2

是的,你的例子非常好。

此外,我认为这是相当不错的设计。通过@duffymo提出的一个进一步的改进是在左侧使用List

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

这样data在抽象列表界面方面的声明,而不是一个具体的列表实现的条款。

+0

我更喜欢LHS上的List ,但那就是我。 – duffymo

+0

@NPE谢谢你的回答:) –

+0

@duffymo:好的,谢谢。 – NPE

2

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

+0

感谢你的回应 –

3

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

+0

谢谢你的回应:) –