Bắt đầu với Java 8, default
các phương thức đã được đưa vào các giao diện. Một cách hiệu quả, phương tiện này mà không phải tất cả các phương pháp trong một interface
làabstract
.
Bắt đầu với Java 9 (có thể), private
các phương thức sẽ được cho phép. Điều này có nghĩa rằng không phải tất cả các phương pháp trong một interface
làpublic abstract
.
Câu hỏi "Các phương thức trong giao diện Java có nên được khai báo có hoặc không có công cụ public
sửa đổi truy cập không?" đã được hỏi tại Stack Overflow tại /programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m
Ở đó, hầu hết các câu trả lời cho rằng public abstract
không nên sử dụng vì không có phương pháp nào trong một interface
có thể là bất cứ điều gì khác ngoàipublic abstract
. Điều này không còn là trường hợp nữa.
Vì vậy, trong các tính năng mới của các giao diện, nên public abstract
từ khóa có nên được sử dụng trong khai báo phương thức giao diện Java không?
Trong môi trường cụ thể của tôi, chúng tôi sẽ có những người là kỹ sư phần mềm có kinh nghiệm, nhưng không có kinh nghiệm về Java, thỉnh thoảng đọc mã Java. Tôi cảm thấy rằng việc bỏ đi các public abstract
từ khóa bây giờ sẽ tạo thêm một điểm nhầm lẫn cho những người không quen thuộc với lịch sử về cách các giao diện xuất hiện để có các quy tắc khác nhau để sử dụng các từ khóa này.
abstract
đang ngày càng trở nên hỗn độn. Trong Java 9, cùng một câu có thể là "Phương thức giao diện thiếu công cụ default
sửa đổi hoặc công cụ static
sửa đổi hoặc công cụ private
sửa đổi hoàn toàn trừu tượng ..." Ngoài ra, các đối số phụ trợ không sử dụng từ khóa một cách rõ ràng, cụ thể là tất cả các phương thức giao diện là public abstract
, bây giờ đang tranh luận
stream
vào java.util.Collection
, hoặc Map.getOrDefault()
. Thay thế là tạo giao diện phụ mới và khiến mọi người thất vọng, như Graphics2D, và không ai thích điều đó!
default
sửa đổi hoặc công cụstatic
sửa đổi là hoàn toànabstract
... không khuyến khích như một vấn đề về phong cách, để chỉ định một cách thừa thãi công cụabstract
sửa đổi cho một tuyên bố phương thức như vậy. " Tại sao bạn mong đợi rằng mọi thứ sẽ thay đổi?