誰かがこの結果を説明できますか?
これは私のコードです:
public class foo <T> {
public static void main(String[] args) {
foo Foo = new foo();
System.out.println(Foo.compare(100L, 100));
System.out.println(Foo.compare(100L, 100L));
System.out.println(Foo.compare(127L, 127L));
System.out.println(Foo.compare(128L, 128L));
System.out.println();
System.out.println(System.getProperty("java.vendor"));
System.out.println(System.getProperty("java.version"));
}
public boolean compare( T val1, T val2) {
return ( val1 == val2 ) ? true : false;
}
}
結果は次のとおりです。
false
true
true
false
Sun Microsystems Inc.
1.6.0_26
初めに:
テンプレートクラス "T" を 1 つしか宣言していないのが不思議です。val1 が long で val2 が int であるため、最初の比較は false になります (デバッガーで確認しました)。しかし、そうすべきではありません.1つのテンプレートクラスのみを宣言しており、両方とも同じです。
と
第二に:
127 より大きいすべての「長い」大きな数値が等しくないのはなぜですか??
ありがとう!