以下のメソッドでは、未処理の型の使用に関する警告は表示しないようにしたいが、私が望むようにするための構文を理解することはできない。ここでは、現在の方法は次のとおりです。リスト内の一般的な比較対象の問題
static long countSplitInversions(List<? extends Comparable> list) {
long inversions = 0;
final int leftLimit = list.size()/2;
int left = 0;
int right = leftLimit;
for (int i = 0; i < list.size(); i++) {
if (left == leftLimit || right == list.size()) {
break;
}
if (list.get(left).compareTo(list.get(right)) <= 0) {
left++;
} else {
right++;
inversions += leftLimit - left;
}
}
return inversions;
}
私は警告を回避するために、署名を変更する場合:
static <T> long countSplitInversions(List<? extends Comparable<? super T>> list)
、その後のcompareToがある行がエラーでコンパイルされません。
Method compareTo in interface java.lang.Comparable<T> cannot be applied to given tyes
required: capture #1 of ? super T
found: java.lang.Comparable<? super T>
を
バー、私はそれが単純だったとは思わない、私は再び一般的なドキュメントを再読する必要があります。助けてくれてありがとう! – Hiro2k
@ Hiro2k:ようこそ!運が良かった。最良の結果を得るために –
を使用してください。 '>' –
newacct