비검사 경고를 제거하라
대부분의 비검사 경고는 쉽게 제거할 수 있다. 할 수 있는 한 모든 비검사 경고를 제거하는 것이 타입 안정성을 보장해준다.
경고를 제거할 수는 없지만 타입 안전하다고 확신할 수 있다면 @SuppressWarnings 어노테이션을 달아 경고를 숨기자.
다이아몬드 연산자.
Set<Lark> exaltation = new HashSet();
Set<Lark> exaltation = new HashSet<>();
@SuppressWarnings
이 어노테이션을 사용할 때는 타입 안전함 검증이 선행되어야 하며, 항상 가능한 한 좁은 범위에 적용해야 한다. 어노테이션은 선언에만 달 수 있기 때문에 return문에는 이 어노테이션을 적을 수 없다. 그렇다고 메서드 전체에 달기 보다는 직연변수를 선언해서 이를 이용하도록 하자.
public <T> T[] toArray(T[] a) {
if(a.length < size) {
@SuppressWarnings("unchecked") T[] result
= (T[]) Arrays.copyOf(elements, size, a.getClass());
return result;
}
}