2013-02-20 55 views
6

Trong Khoa học AP Computer lớp ngày hôm nay, tôi đã mã này:Tại sao có thể gọi phương thức trên phương thức giao diện Java? [So sánh]

Comparable x = 45; 
    Comparable y = 56; 
    System.out.println(x.compareTo(y)); 

Và đây là hợp lệ. Nó in 1 (hoặc -1, tôi quên cái nào), nhưng có thể so sánh chúng.

Tôi hiểu rằng các biến giao diện tham chiếu đến đối tượng của lớp thực hiện giao diện đó, nhưng điều không có ý nghĩa với tôi là cách biến giao diện có thể được gán một số nguyên và sau đó có phương thức được gọi. Đối tượng nào trong trường hợp này là phương thức compareTo() đang được gọi? Không có gì thậm chí còn được khởi tạo!

Trả lời

11

Điều này được gọi là autoboxing, loại int nguyên thủy của bạn được tự động gói vào một phiên bản Integer, là một đối tượng và nó thực hiện giao diện Comparable.

5

Số nguyên của bạn đang được đóng hộp thành Số nguyên (ví dụ: Objects). Đó là để nói, các nguyên thủy đang được thay thế bởi các đối tượng gói những nguyên thủy. Lưu ý rằng Integer thực hiện Comparable.

Các vấn đề liên quan