[핵심 정리]
- 제네릭을 사용하면 경고가 줄어들것이다.
- 그럼에도 뜨는 비검사 경고가 있다면 이를 제거하도록 하자
- 모든 비검사 경고는 런타임에 ClassCastException을 발생시킬 수 있다. 그러니까 모든 가능한 경고를 제거하도록하자.
- 경고를 없앨 수 없다면 최대한 범위를 좁혀서
@SuppressWarnings("unchecked")
를 사용해 경고를 숨기자
비검사 경고 (Unchecked Warnings):
컴파일러가 코드에서 타입 안전성을 검증할 수 없거나, 컴파일러가 특정 조건에서 발생하는 경고를 의미합니다. 예를 들어, 제네릭이 사용된 컬렉션에서 원시 타입을 사용하거나, 형 변환을 할 때 타입 캐스트가 안전한지 검증할 수 없는 경우에 비검사 경고가 발생할 수 있습니다. 이러한 경고는 코드의 안정성을 보장하기 위해 컴파일러가 경고를 통해 개발자에게 알려줍니다. 경고는 컴파일 시점에 발생하며 프로그램 실행과는 직접적으로 관련되지 않습니다.
Set<Lark> exaltation = new HashSet();
: 컴파일러가 해당 코드의 문제점 해경 방안을 명시해준다.Set<Lark> exaltation = new HashSet<>();
:타입 매개변수를 명시하여 해당 문제를 해결할 수도 있지만 이 경우엔 다이아몬드 연산자를 이용해서도 문제를 해결할 수 있다.@SuppressWarnings("unchecked")
를 달아주자.@SuppressWarnings("unchecked")
를 사용할거라면?@SuppressWarnings("unchecked")
를 사용해서 경고를 무시한다면 해당 경고를 무시해도 안전한 이유를 항상 주석으로 남겨두어야 한다.