0

我们知道我们应该支持组合而不是继承,对吧?好吧, sort()模板方法的实现者决定不使用继承,而是将其实现sort()为在运行时与 Comparable 组合的静态方法。

  • 这如何更好?
  • 情况如何更糟?
  • 你会如何处理这个问题?
  • Java 数组是否让这变得特别棘手?
4

1 回答 1

0

关于将功能添加到类或关联的实用程序类,总是存在设计辩论。和你一样,我更喜欢前者,但有些人认为这会使一个班级“太大”。我会将 sort() 放在 Collection 中,而不是放在 Collections 中,但 Sun 另有决定。

此外,在某些方面,数组不被视为“真正的”类,因此可能存在实现问题。

添加了说明

您仍然需要 Collections(或 AbstractCollection)中的静态 sort() 实用程序方法,以便罐装实现和任何用户定义的实现可以轻松地自行排序。所以,MyGoofyCollection.sort()可以只调用Collections.sort(this); 但是,我更喜欢使用的习惯用法是调用myCollection.sort(),而不是当前的Collections.sort(myCollection).

请注意,这也允许特定实现提供他们自己的、优化的 sort() 实现。例如,如果我有一个 AlwaysSortedList,它的 sort() 实现是什么都不做。

然而,这都是相当无用的讨论,因为 Java 已经按照自己的方式实现了它,而且不太可能改变......也许在 Java 9 或 10 中?

于 2013-07-17T04:57:09.593 回答