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
}
Với ví dụ trên, chúng ta có thể thừa nhận trong một số cách rằng null
được gõ. Vậy tại sao các dòng sau in true
? Chắc chắn o1
và o2
cả hai đều không có giá trị (ví dụ: null
), nhưng chúng không phải từ cùng một loại (Integer
so với Float
). Trước hết tôi nghĩ rằng false
sẽ được in.So sánh hai đối tượng null từ hai loại khác nhau
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
Null không có một loại: [http : //stackoverflow.com/questions/2707322/what-is-null-in-java] [1] [1]: http://stackoverflow.com/questions/2707322/what-is-null-in -java – Stegrex
'null' được gõ; xem câu trả lời của tôi – irreputable