4
ジェネリックメンバーを比較できるjavaクラスにジェネリッククラスを書くのが難しいです。ジェネリッククラスのジェネリックメンバーを比較する方法
以下は私が書いたコードスニペットですが、コンパイルエラーです。
public class TestClass <E extends Comparable<E>>{
private E data1;
private E data2;
public void fun(){
if(data1 > data2){
}
}
}
compare( '>')操作が無効であると言ってエラーが表示されます。 私の理解によれば、私がComparableを拡張しているのであれば、私はこの操作を行うことができます。
ありがとうziesemer。 1つの疑い。 'E extends Integer'を' data1> data2'よりもうまくいけば 'E extends Comparable'の代わりに 'この場合、整数に適用できるので、 '>'演算を許可していると仮定しています。比較可能なすべてのオブジェクトで '> '操作が許可されているので、同じコンセプトを適用するべきではありません。「Comparable 」です。 –
shantanu
@ shantanu - これだけです - '<' and '>'演算子はComparableやその他の非プリミティブ型(int、shortなど)では使用できません。 'Integer'(非プリミティブ)で動作する唯一の理由は、Java 5の自動アンボクシングのためです。まず、Integerをintに変換して比較を行います。 (そうでなければ、上記と同様に 'Integer.compareTo(Integer anotherInteger)'を使う必要があります。) – ziesemer
ありがとう、いい説明があります。 – shantanu