Tôi có một phương thức riêng tư trong lớp bên trong là riêng tư mà tôi muốn sử dụng chú thích SafeVarargs. Tuy nhiên, tôi bắt buộc phải có phương pháp tĩnh hoặc cuối cùng. Tại sao một phương pháp riêng tư cũng cần phải là cuối cùng? Không phải là dự phòng này?java @SafeVarargs tại sao các phương thức riêng tư cần phải là kết quả cuối cùng
Trả lời
Nó là thừa, và bạn mang đến một điểm tuyệt vời.
Tôi nghĩ lý do thực sự cho yêu cầu cuối cùng hoặc tĩnh là buộc phương thức không thể ghi đè và do đó một phân lớp không thể giả mạo dữ liệu theo cách khiến chú thích @SafeVarargs vô dụng trên định nghĩa của phương thức. Tuy nhiên, mặc dù nó là dư thừa, nó không phải là xấu của một quyết định - nhiều lần, các lập trình viên sẽ làm cho mọi phương thức riêng tư càng nhiều càng tốt, và sau đó từ từ mở lớp lên khi cần thiết. Nếu phương pháp này được đánh dấu cuối cùng khi nó nằm trong phạm vi riêng, thì nếu phương thức đó được mở ra, nó vẫn có thể có chú thích @SafeVarargs tại chỗ chỉ với một thay đổi đối với cấp truy cập. Nếu cuối cùng bị xóa một cách có chủ ý, bạn sẽ nhận được lỗi thời gian biên dịch, nhưng nếu bạn đã có nó, bất cứ ai xóa quyền truy cập riêng tư (có thể không phải là chính bạn, trong môi trường dựa trên nhóm) sẽ không bị nhầm lẫn là tại sao loại bỏ công cụ sửa đổi "riêng tư" đột nhiên làm cho mã không còn biên dịch được nữa.
Nếu được thông báo lỗi sẽ là một cái gì đó như "java.lang không hợp lệ. Chú thích SafeVarargs. Phương thức thể hiện ... không phải là cuối cùng cũng không riêng tư ", sẽ không có sự nhầm lẫn nào với bất kỳ ai đã xóa' riêng tư'. –
Tính năng này là một phần của dự án Coin 2 và sẽ hoành phi câu trong Java 9 đến tháng bảy năm 2017.
Đó là cuộc gọi Chấp nhận @SafeVarargs về phương pháp tư nhân.
- 1. Đặt các phương thức riêng tư cuối cùng?
- 2. Tại sao phương pháp chính là riêng tư?
- 3. Tạo Hashtable là kết quả cuối cùng trong java
- 4. Tại sao PHP cho phép gọi các phương thức riêng tư từ các phiên bản khác?
- 5. Tại sao khai báo một đối số hàm để là kết quả cuối cùng?
- 6. Hiệu quả của việc khai báo biến cuối cùng trong các phương thức là gì?
- 7. Tại sao Resharper lại muốn trường hợp lạc đà cũng là phương thức riêng tư?
- 8. Tại sao có phương thức equals riêng cho các bộ?
- 9. Tại sao cuối cùng là lớp Chuỗi?
- 10. Tại sao tạo danh sách cuối cùng riêng tư/Bộ/Bản đồ không thể sửa đổi?
- 11. Nếu một lớp được khai báo là cuối cùng thì cần phải khai báo các phương thức như là số
- 12. Tại sao phương thức TaskFactory.StartNew không phải là chung?
- 13. RSpec: Phương thức riêng tư sơ khai
- 14. tôi không thể có cả hai từ khóa trên cùng một dòng: riêng tư cuối cùng ...()?
- 15. Tại sao một Java enum không thể là cuối cùng?
- 16. Phương pháp không phải cuối cùng trong lớp cuối cùng
- 17. Phương thức và trường riêng tư
- 18. Làm cho các phương thức được ủy quyền riêng tư
- 19. Tại sao bạn khai báo phương thức getters và setters riêng tư?
- 20. Tại sao phương thức chain() Underscore.js không phải là lười?
- 21. Tại sao phải có phương thức ClassInitialize là tĩnh?
- 22. Phương thức riêng tư của Ruby on Rails?
- 23. Truy cập các phương thức "Công khai" từ các phương thức "Riêng tư" trong lớp javascript
- 24. Tại sao không có giao diện cuối cùng trong Java?
- 25. Tại sao tôi không thể gọi phương thức riêng tư khi tôi ở trong một phương thức công khai?
- 26. Tại sao phải trả $ this trong các phương thức setter?
- 27. Các phương thức được yêu cầu thực thi theo một thứ tự cụ thể có phải là riêng tư không?
- 28. Tại sao các lớp bên trong làm cho các phương thức riêng có thể truy cập?
- 29. Tại sao lớp java.util.Scanner được khai báo là 'cuối cùng'?
- 30. Phương thức nhập của Ruby có luôn riêng tư không?
Nếu tôi hiểu đúng, bạn có thể sử dụng @Safe varargs cho nhà thầu, cho các phương pháp tĩnh, đối với phương pháp cuối cùng và kể từ java-9 cho tin – gstackoverflow