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
两者都没有价值(ie 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