Tôi là một giải pháp kiến trúc sư cấp cao, nhưng gần đây tôi vấp vào một câu hỏi mà khiến tôi dừng lại và suy nghĩ ...So sánh đối tượng và int trong Java 7
Đối với tôi, mã dưới đây luôn nên kích hoạt một lỗi, nhưng khi một trong những đồng nghiệp của tôi hỏi tôi tại sao Eclipse không hiển thị, tôi không thể trả lời bất cứ điều gì.
class A {
public static void main(String... args) {
System.out.println(new Object() == 0);
}
}
Tôi đã điều tra và thấy rằng với mức nguồn 1.6 nó thực sự ném một lỗi:
incomparable types: Object and int
Nhưng bây giờ trong 1,7 nó biên dịch ok.
Xin vui lòng, tính năng mới nào đảm bảo hành vi này?
Giờ bạn có nghĩa là nó tương đương với 'đối tượng mới() == null' và' đối tượng mới() == 2' vẫn kích hoạt lỗi không? –
Nó phải ít nhiều tương đương với 'new Object() == new Integer (0)' (hoặc 'new Integer (2)'). Nó không bao giờ là một lỗi, và luôn luôn là 'false' vì' Object' mới không thể là đối tượng giống với đối tượng 'Integer'. – ajb
@MartijnCourteaux Không hẳn. Nó tương đương với 'new Object() == Integer.valueOf (0)' và 'new Object() == Integer.valueOf (2)'. Cả hai sẽ luôn luôn sản xuất sai, tất nhiên. –