2012-11-12 32 views
7

Trong Java Tôi có một lớp mà thực hiện một giao diện:Tại sao tôi không thể truy cập một biến được khai báo trong một lớp, mà thực hiện một giao diện Java, từ Scala?

AlertDialog implements DialogInterface 

Nếu một số biến được khai báo bên trong giao diện tôi có thể truy cập chúng:

AlertDialog.BUTTON_POSITIVE 

Nhưng trong Scala dòng trên không biên dịch . Có vẻ như nó bị ẩn. Có cách nào để truy cập các biến này trong Scala mà không tạo ra một đối tượng mới hoặc làm bất cứ điều gì khác hacky?

Trả lời

2

Không có cách nào trong Scala có quyền truy cập vào các biến này từ lớp AlertDialog nhưng bạn có thể sử dụng giao diện chính nó làm đối tượng để truy cập chúng.

Vì vậy, bạn có thể trực tiếp truy cập vào các biến từ giao diện:

DialogInterface.BUTTON_POSITIVE 
+1

đợi một phút. bạn đăng câu hỏi ** VÀ ** một câu trả lời cùng một lúc ?? – UmNyobe

+4

@UmNyobe Đây là điều tuyệt vời để làm. Xem http://meta.stackexchange.com/questions/12513/should-i-not-answer-my-own-questions –

+1

bạn có thể trả lời câu hỏi của riêng bạn. đó là tốt. Đặt một câu hỏi và một câu trả lời ở cùng là phiền hà. Thêm vào đó anh ta trả lời như thể anh ta là một người khác :). – UmNyobe

14

Để cung cấp chi tiết hơn một chút: lý do này không thể được accesed là George đang nói về các thành viên tĩnh được xác định trên giao diện. Scala không có các thành viên tĩnh - thay vào đó, một thành viên tạo ra một object, một lớp thông thường với một triển khai duy nhất. Khi bạn mở rộng từ một giao diện Java, Scala sẽ chỉ mở rộng các thành viên không tĩnh, bởi vì các thành phần tĩnh được xử lý như đang ở trong một đồng hành object. Đối tượng đồng hành được đặt tên giống như giao diện, do đó bạn có thể truy cập đối tượng đó dưới dạng DialogInterface.BUTTON_POSITIVE.

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