Open heon118 opened 4 months ago
제네릭을 사용하는 것이 익숙하지 않다면, 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등 수많은 컴파일러 경고를 보게 될 것이다. 이 때 경고를 무시하지 말고 가능한 제거하자.
Set<Lark> exaltation = new HashSet();
Venery.java:4: warning: [unchecked] unchecked conversion Set<Lark> exaltation = new HashSet(); ^ required: Set<Lark> found: HashSet
@SuppressWarnings
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; }
retrun 문에는 @SuppressWarnings 불가
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; }
@SuppressWarnings("unchecked")
-
Chapter : 5. 제네릭
Item : 27. 비검사 경고를 제거하라
Assignee : heon118
🍑 서론
제네릭을 사용하는 것이 익숙하지 않다면, 비검사 형변환 경고, 비검사 메서드 호출 경고, 비검사 매개변수화 가변인수 타입 경고, 비검사 변환 경고 등 수많은 컴파일러 경고를 보게 될 것이다. 이 때 경고를 무시하지 말고 가능한 제거하자.
🍑 본론
비검사 경고란?
@SuppressWarnings
@SuppressWarnings
-> 지역변수 선언 쪽으로retrun 문에는
@SuppressWarnings
불가🍑 결론
경고를 없애지 못하겠다? -> 해당 코드의 타입 안정성을 증명하고 범위를 좁혀
@SuppressWarnings("unchecked")
어노테이션으로 경고를 숨기기 -> 경고를 숨기기로 한 근거를 주석 처리Referenced by
-