Tôi sử dụng @SuppressWarnings("unchecked")
và @SuppressWarnings("null")
hầu hết các phương thức trên để cho phép biên dịch mã mà không có bất kỳ cảnh báo nào nhưng tôi có nghi ngờ của mình. Tìm thấy câu hỏi Stackoverflow này . Jon Skeet đã viết một câu trả lời cho nó mà tôi thấy hấp dẫn.
Theo như anh ấy,
Đôi khi, các tổng quát Java không cho phép bạn làm những gì bạn muốn và bạn cần nói với trình biên dịch một cách hiệu quả rằng những gì bạn đang làm thực sự sẽ hợp pháp tại thời điểm thực thi.
Nhưng nếu có cơ hội, một ngoại lệ sẽ bị ném thì sao? Không phải là đàn áp cảnh báo là một ý tưởng tồi? Tôi không nên nhận thức được những nơi mà vấn đề có thể nổi lên?
Ngoài ra, nếu người khác sửa đổi mã của tôi sau này và thêm một số chức năng đáng ngờ mà không xóa SuppressWarnings thì sao? Làm thế nào điều đó có thể tránh và / hoặc có bất kỳ sự thay thế nào khác cho điều này?
Tôi có nên sử dụng @SuppressWarnings("unchecked")
và @SuppressWarnings("null")
?
Cập nhật số 1
Theo như câu hỏi loại không được kiểm tra, theo câu trả lời này (được @gnat chỉ ra trong các bình luận bên dưới), việc loại bỏ các cảnh báo này là cần thiết.
Nhiều thư viện Java không thể thiếu chưa bao giờ được cập nhật để loại bỏ nhu cầu về các kiểu chữ không an toàn. Việc ngăn chặn những cảnh báo đó là cần thiết để những cảnh báo quan trọng khác sẽ được chú ý và sửa chữa.
Trong trường hợp ngăn chặn các cảnh báo khác, vẫn còn trong một khu vực màu xám.
Cập nhật số 2
Theo tài liệu Oracle (cũng được đề cập bởi một số câu trả lời dưới đây):
Là một vấn đề về phong cách, các lập trình viên nên luôn luôn sử dụng chú thích này trên phần tử lồng nhau sâu nhất, nơi nó có hiệu quả. Nếu bạn muốn loại bỏ một cảnh báo trong một phương thức cụ thể, bạn nên chú thích phương thức đó thay vì lớp của nó.