私は2つのComparable
を取る一般的なmax関数を書こうとしています。Javaで汎用の `max(Comparable a、Comparable b)`関数を実装する方法は?
これまでのところ、私はこれは私がこれを言っていると思う何
The method compareTo(capture#5-of ?) in the type Comparable<capture#5-of ?> is not applicable for the arguments (T)
でコンパイルに失敗し
public static <T extends Comparable<?>> T max(T a, T b) {
if (a == null) {
if (b == null) return a;
else return b;
}
if (b == null)
return a;
return a.compareTo(b) > 0 ? a : b;
}
を持っているがComparable<?>
で?
はパラメータaのための一つのタイプとして解釈することができるということで、パラメータbのためにもう1つは比較できないようにします。
どうすればこの穴から自分を掘り出すことができますか?
'if(a == null)'ブロックでは、ネストされたif節は必要ありません。ブロックを 'return b; 'にすると、同じ結果が返されます(' b'が 'null'ならば' null'、さもなければ 'b')。 – benjamin
[org.apache.commons.lang3.ObjectUtils.compare](https://commons.apache.org/proper/commons-lang/javadocs/api-3.6/org/apache/commons/lang3/ObjectUtils.html#)をご覧ください。 –