我的问题很简单。我试图建立一个建筑图表的建设者。图表数据将由对象填充,具体取决于我的程序员创建的程序。因此,我使用了一个名为ObjectInterface
的接口来确保对象始终具有某些方法。
我的问题是,如果我想将这些对象(我不知道哪种类型)添加到ArrayList,可以添加它们,如下所示:
ArrayList<ObjectInterface> data = new ArrayList<ObjectInterface>();
ObjectType Test = new ObjectType("Test");
data.add(test);
在此示例中,ObjectType是实现ObjectInterface
答案 0 :(得分:3)
如果ObjectType
是ObjectInterface
的子类型(或实现),那么它是合法的。你没有Java编译器吗?它会回答你所有的“这是合法的”问题;)
答案 1 :(得分:2)
是的,这是合法的。您可以将ObjectInterface
的子类型(例如ObjectType
)添加到ArrayList<ObjectInterface>
。
答案 2 :(得分:2)
是的,你的例子非常好。
此外,我认为这是非常好的设计。 @duffymo建议的另一个改进是在左侧使用List
:
List<ObjectInterface> data = new ArrayList<ObjectInterface>();
这种方式data
是根据抽象列表接口声明的,而不是根据具体列表实现声明。