我应该创建一个类,它应该是一个值区间的容器(就像在数学中)。我已经决定在内部使用 SortedSet
。
我应该实现的其中一件事是“获取包含区间内所有元素的有序集合”的方法。
class Interval {
private SortedSet sortedSet = new something();
...
<<method that should return an ordered set of values>>
}
我的问题在于方法的返回类型和名称应该是什么。几个假设出现:
SortedSet getSortedElements();
我在内部使用SortedSet
,因此我应该返回该类型。我应该在方法名称中说明该意图。SortedSet getElements();
我在内部使用SortedSet
,但在方法名称中声明它没有意义(我看不出有什么大不了的这个)。Set getElements();
我应该尝试始终返回最基本的类型,因此我返回了一个 Set。通过契约(Contract)和方法的定义,人们已经知道所有的元素都是有序的。Set getSortedElements();
对于方法返回类型,同上。关于方法名称,您清楚地说明了此方法将返回什么:一组已排序的元素。
我倾向于使用 4.
,但其他的似乎也不错。有明显的赢家吗?为什么?
最佳答案
SortedSet
是一个接口(interface),带有对元素进行排序的约定。它还公开了一些 Set
中不可用的方法(例如 first()
)。如果您应该返回一个遵守该契约的对象(例如,在 iterator() 上返回有序值),那么您应该返回一个 Sorted Set
。如果不是,您应该返回一个 Set
(或一个 Collection
)。
您可以根据希望如何使用结果来确定要返回的内容。先想一想“得到区间内所有元素的有序集合”是什么意思,再考虑实现。
顺便上代码
private SortedSet sortedSet = new SortedSet();
是非法的,因为 SortedSet
是一个接口(interface)。由于这是家庭作业,我将留给您找出问题所在。
关于java - 无法确定返回 SortedSet 的方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2885885/