我对 Java 中的泛型类型有疑问。具体来说,目前我有一些类似这样的代码:
public interface Foo {
public <T> void bar(T[] list)
}
public class FooImpl implements Foo{
@Override
public <T extends Comparable<? super T>> void bar(T[] list) {
...
}
}
问题是,编译器现在抱怨说我没有在我的 FooImpl 类中实现 bar 方法。
我想要的是对泛型类型施加一些额外的限制,特别是它们应该具有可比性。但我不想把这个限制放在我的 Foo 接口中,因为所有实现都不需要这个限制。这可能吗,我应该怎么做才能解决它?
提前非常感谢!
编辑 1:修正了拼写错误类 --> 类和接口 --> 接口。但是返回类型仍然是无效的,而不是 T,这是无关紧要的,我想。我的实际返回类型是布尔值。
编辑2:实际代码,按要求:
public interface SortedCriteria {
public <E> boolean isSorted(E[] list);
}
public class AscendingCriteria implements SortedCriteria {
@Override
public <E extends Comparable<? super E>> boolean isSorted(E[] list) {
int length = list.length;
for (int i = 1; i < length; i++) {
if (list[i].compareTo(list[i-1]) < 0) return false;
}
return true;
}
}