Tôi không tưởng tượng rằng tôi sẽ gặp phải cú pháp hoàn toàn mới trong Java nữa ở giai đoạn này, nhưng lo and behold một cái gì đó, tôi chỉ gặp phải:cú pháp Strange cho instantiating một lớp bên trong
Bối cảnh chính xác và những gì mã dưới đây nên làm là khá không liên quan - nó chỉ có để cung cấp cho một số loại bối cảnh.
Tôi đang cố gắng để tổng hợp tạo ra một sự kiện trong lĩnh vực CNTT Mill Toolkit, vì vậy tôi đã viết như thế này của dòng:
buttonClick(new Button.ClickEvent(button));
Nhưng, Eclipse mang lại cho tôi thông báo lỗi sau:
Không thể truy cập thể hiện kèm theo loại Nút. Phải đủ điều kiện phân bổ với một thể hiện kèm theo của Button type (ví dụ x.new A() trong đó x là một thể hiện của Button).
Khi tôi viết lại những dòng trên như sau, nó không phàn nàn nữa:
buttonClick(button.new ClickEvent(button)); // button instanceof Button
Vì vậy, câu hỏi của tôi là: không cú pháp sau có ý nghĩa gì, chính xác, và tại sao không đoạn đầu tiên hoạt động? Java phàn nàn về điều gì và nó làm gì trong phiên bản thứ hai?
Thông tin cơ bản: Cả hai Button
và Button.ClickEvent
là các lớp công khai không trừu tượng.
Thú vị câu hỏi, nhưng tiêu đề có lẽ có thể phức tạp hơn. – mafu
Bạn có thể tự do đề xuất. Tôi không biết phải gọi cú pháp vào thời điểm nào, vì vậy tựa đề vẫn còn, thật không may, là lạ. –