Set<Lark> exaltation = new HashSet(); -> 비검사 경고가 발생하는 코드
Set<Lark> exaltation = new HashSet<>(); -> 해결 방법
이렇게 해결하면 경고가 안뜬다 그리고 컴파일러가 올바른 실제 타입 매개변수 Lark를 추론해준다
이런거 뿐만 아니라 제거하기 훨씬 어려운 경고들이 많다 왠만하면 해결해서 제거하는게 좋다 그러면 타입안정성이 보장된다 하지만 경고를 제거할 수 없지만 타입이 안전하다고 확실할 수 있다면 @SuppressWarning(”unchecked”) 애너테이션을 달아 경고를 숨기자 그리고 이 어노테이션은 가능한 좁은 범위에 적용하자
public <T> T[] toArray(T[] a) {
if (a.length < size
return (T[]) Arrays.copyOf(elementData, size, a.getClass());
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
public <T> T[] toArray(T[] a) {
if (a.length < size)
// 생성한 배열과 매개변수로 받은 배열이 모두 T[]로 같으므로
// 올바른 형변환이다.
@SuppressWarnings("unchecked")
T[] result = (T[]) Arrays.copyOf(elementData, size, a.getClass());
return result
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
이렇게 경고를 무시할거면 안전한 이유를 항상 주석으로 남기자