Java接口集合

Java接口集合,java,collections,Java,Collections,我正在编写一个小API来处理具有特定“特征”的对象在本例中,它们都有一个时间间隔和一些其他数据位,因此我编写了一个带有一些getter和setter的接口时间间隔 现在,大多数API方法都处理一组或一组对象。在内部,这些方法使用Java Collections框架(特别是HashMap/TreeMap)。因此,这些API方法如下所示: getSomeDataAboutIntervals(列出intervalObjects) 两个问题: a) 如果您将您的列表声明为List1),这应该是List吗

我正在编写一个小API来处理具有特定“特征”的对象在本例中,它们都有一个时间间隔和一些其他数据位,因此我编写了一个带有一些getter和setter的接口时间间隔

现在,大多数API方法都处理一组或一组对象。在内部,这些方法使用Java Collections框架(特别是HashMap/TreeMap)。因此,这些API方法如下所示:

getSomeDataAboutIntervals(列出intervalObjects)

两个问题:


a) 如果您将您的列表声明为
List1),这应该是
List吗?延长时间间隔。由于Java的多态性,它实际上可能没有什么不同,但它更健壮,风格更好

2) 是

a)否。
列表
应该改为列出intervalObjects吗

只有当您想传入
列表时,才可以这样做。注意:您可以将
TimeInterval
的子类的实例放入
列表中。请记住,列表的类型与列表中的类型不同

如果你做了
List1)是的


方法参数应尽可能通用<代码>列表我在帖子中为您添加了代码块。请查看文档,了解下一次如何自己做。谢谢,在我编辑之前您就已经到了:)它不太一般;限制性更强。如果您有
接口A
和实现
A
的类
B
C
D
,则在
列表中可以将
B
C
D
的实例存储在同一列表中。例如,使用
List
,您只能存储
C
的实例,而不能存储
B
D
。创建一个方法
getSomeDataAboutIntervals没有任何意义(List@Paul从方法调用方的角度来看,它更一般。他们可以给它一个
列表
列表
列表
。如果方法采用
列表
,并且他们有一个
列表
,他们将不得不进行扭曲以使它们协同工作。我不理解你关于
实例的观点ceof
。如果
TimeInterval
未公开方法中所需的功能,则不应使用通配符绑定。
List<List> mylist=  new ArrayList<List>();
mylist.add(new ArrayList());
<T extends MyObject> List<T> filterMyObjects(List<T>)