Collection
是Iterable
的大小,您可以为其检查包含,添加或删除元素。我有继承Iterable
且具有大小的对象,但没有Collection的其他功能。我不想使用“不支持的”例外实现Collection
方法。
在Iterable
和Collection
之间是否有一些常用的中间课程,我可以让我的对象扩展?像'SizedIterable'之类的东西?或者,更一般地说,一个恰当的习语?
注意:是的,它实际上无法检查成员资格但是有一个大小。
答案 0 :(得分:4)
为什么不创建自己的扩展Iterable
的界面?这样,您就可以定义要添加到自定义对象的功能。
这样的事可能
public interface SizedIterable<T> extends Iterable<T> {
int size();
}
答案 1 :(得分:1)
简短的回答是否定的。
答案很长:这个界面有需要吗?你有什么计划用它?除非你有许多不同的类具有相同(相当不寻常)的属性,并且某些方法依赖于它,否则我无法想到对此接口的任何明显需求。
您是否计划将此对象传递给标准库函数/类?这些方法实际上是调用size()吗?
如果是这样,你可能只需要实现Collection,然后根据需要选择add()/ remove()/ contains()/ etc。
如果没有,并且你真的需要这个界面,扩展Iterable是一个很好的方法。
e.g。
public interface SizedIterable<T> extends Iterable<T> {
public int size();
}