Skip to content

Latest commit

 

History

History
38 lines (32 loc) · 1.52 KB

File metadata and controls

38 lines (32 loc) · 1.52 KB

아이템 27 비검사 경고를 제거하라

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;
}

이렇게 경고를 무시할거면 안전한 이유를 항상 주석으로 남기자