Java接口扩展了Comparable
我希望有一个由T
A
参数化的接口A
,并且还希望实现它的每个类也实现Comparable
(使用T
及其子类型)。 编写interface A extends Comparable
似乎很自然interface A extends Comparable
interface A extends Comparable
,但这不起作用。 那我该怎么办呢?
当Comparable extends T>
Comparable extends T>
似乎意味着你有一个Comparable
实例可以与T
一个(未知)子类型进行比较,而不是它可以与T的任何子类型进行比较。
但是你不需要这样,因为Comparable
可以将自己与T
任何子类型进行比较,例如, Comparable
可以将自己与Comparable
进行Comparable
。
所以尝试:
interface A extends Comparable { // ... }
要么
interface A> extends Comparable> { // ... }
取决于您是否需要能够比较T
实例以实现compareTo
方法。
如果使用可比较的,则不需要在比较函数中指定子类型的可能性,本质上可以将对象X的任何子类型传递到声明类X的参数的方法中。请参阅下面的代码了解更多信息信息。
public interface Test extends Comparable { } class TestImpl implements Test { @Override public int compareTo(final Number other) { return other.intValue() - 128; } } class TestMain { public static void main(final String[] args) { TestImpl testImpl = new TestImpl(); testImpl.compareTo(Integer.MIN_VALUE); } }