发布于 2016-04-09 13:21:22
看起来,这些方法似乎完全被重写了,以便能够提供不同的文档。
对于所有三种方法,文档中唯一的不同之处是SortedMap
版本添加了“集合的迭代器以升序返回条目”。以主描述和“按升序键排序”到返回值描述。
最明显的后续问题是,为什么这三个方法签名没有简单地更改为返回SortedSet
而不是Set
。不幸的是,我无法给出这样的原因,因为Java语言似乎允许这种更改,而SortedSet
上的其他方法似乎很容易实现。
发布于 2017-05-23 18:00:10
除了确认方法签名之外,通过重写方法声明可以完成的所有任务是细化返回类型或限制方法的实现可能引发的异常。
因此:您可以更改throws
签名,并且/或可以指定原始返回类型的更具体的子类型。例如:
interface Foo {
Foo get() throws IOException;
}
interface Bar extends Foo {
Bar get() throws RuntimeException;
}
这是完全合法的,因为无论哪一条,都要完全省略throws
条款。
发布于 2016-04-09 17:24:41
我不认为接口方法能够“覆盖”父接口方法(在Java 7中);只有(子)类可以有“覆盖”方法。SortedMap和Map是接口,而不是类。因此,您所看到的只是一个文档问题,而不是一些技术问题。
(而子接口重载则是另一回事,尽管您引用的方法不是重载,因为它们具有相同的签名。)
https://softwareengineering.stackexchange.com/questions/315228
复制相似问题