내가 사용 @SuppressWarnings("unchecked")
하고 @SuppressWarnings("null")
경고없이 코드를 컴파일을 수 있도록 대부분의 방법보다하지만 내 의심이. 이 Stackoverflow 질문을 찾았습니다 . Jon Skeet는 이에 대한 답변 을 썼습니다 .
그의 말에 따르면,
때로는 Java generics를 사용하여 원하는 작업을 수행 할 수 없으며 컴파일러가 실제로 수행중인 작업이 실행 시간에 합법적이라는 것을 효과적으로 알려야합니다.
그러나 예외가 발생할 가능성이 있다면 어떨까요? 그렇다면 경고를 억제하지 않는 것이 좋지 않습니까? 문제가 발생할 수있는 장소를 알고 있어야합니까?
또한 누군가 다른 사람이 나중에 내 코드를 수정하고 SuppressWarnings를 제거하지 않고 의심스러운 기능을 추가하면 어떻게됩니까? 어떻게 피할 수 있고 다른 대안이 있습니까?
내가 사용해야 @SuppressWarnings("unchecked")
하고 @SuppressWarnings("null")
?
업데이트 # 1
이 답변 에 따르면 (아래 주석에서 @gnat이 지적한) 검사되지 않은 유형의 캐스트 는 이러한 경고를 억제해야합니다.
안전하지 않은 타입 캐스트가 필요 없도록 많은 필수 Java 라이브러리가 업데이트 된 적이 없습니다. 다른 더 중요한 경고를보고 수정하려면 해당 경고를 억제해야합니다.
다른 경고를 억제하는 경우 여전히 약간 회색 영역에 있습니다.
업데이트 # 2
당으로 오라클 문서 (또한 다음과 같은 몇 가지 답변 언급) :
스타일의 문제로 프로그래머는 항상 가장 깊은 중첩 요소에이 주석을 사용해야합니다. 특정 메소드에서 경고를 표시하지 않으려면 해당 클래스가 아닌 해당 메소드에 주석을 달아야합니다.