我有一个关于Java泛型类型的问题。具体来说,目前,我有类似这样的代码: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类的吧,方法。
我想要的是对泛型进行一些额外的限制,特别是它们应该具有可比性。但是我不想把这个限制放在我的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;
}
}
'如果(名单的instanceof可比)'? – christopher
这可能是一个错字问题。发布您的实际代码。 – chrylis
@Chris现在查看课程...请 – venergiac