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: クラス --> クラスおよびインターフェイス --> インターフェイスのタイプミスを修正しました。しかし、戻り値の型はまだ void であり、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;
}
}