2011-10-11 36 views
23

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

+0

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

Trả lời

15

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.

+1

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ư'. –

4

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.

Link.

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