public void m1(Integer f) {
...
}
public void m1(Float f) {
...
}
public void main() {
m1(null); // error: the method m1(Integer) is ambiguous for the type Main
m1((Integer) null); // success
}
上記の例を考えると、いくつかの方法でnull
入力されていることを認めることができます。では、なぜ次の行が出力されるのtrue
でしょうか? 確かo1
に、o2
どちらにも値はありません (つまりnull
) が、同じ型 ( Integer
vs Float
) ではありません。最初false
は印刷されていると思っていました。
Integer i = null;
Object o1 = (Object) i;
Float f = null;
Object o2 = (Object) f;
System.out.println(o1 == o2); // prints true
// in short:
System.out.println(((Object) ((Integer) null)) == ((Object) ((Float) null))); // prints true