Skip to content

Commit

Permalink
[Meet-Coder-Study#27] 잘못된 내용 삭제
Browse files Browse the repository at this point in the history
  • Loading branch information
pkch93 committed Feb 3, 2021
1 parent e49debe commit fb7e2b2
Showing 1 changed file with 0 additions and 10 deletions.
10 changes: 0 additions & 10 deletions 5장/27_비검사_경고를_제거하라_박경철.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,16 +186,6 @@ private <T> List<T> toList(Class<T> clazz, T... elements) {

앞선 `toList` 메서드에 `Class<T>` 타입의 clazz를 파라미터로 추가한 코드이다. 이렇게 추가한다면 제네릭 타입 T를 clazz로 결정할 수 있으므로 elements에 올 수 있는 타입은 clazz로 설정한 타입이 된다. 즉, elements는 컴파일러에 의해서 안전하다고 보장할 수 있다.

하지만 컴파일러는 아직 위 코드에 대해 비검사 경고를 알려준다.

```
src/test/java/edu/pkch/generic/GenericTest.java:43: warning: [unchecked] Possible heap pollution from parameterized vararg type T
private <T> List<T> toList(Class<T> clazz, T... elements) {
^
where T is a type-variable:
T extends Object declared in method <T>toList(Class<T>,T...)
```

위와 같은 경우 안전하다고 보장할 수 있으므로 `@SuppressWarnings("unchecked")`로 비검사 경고를 숨길 수 있다. 단, 타입 안정성을 검증하지 않은 채 경고를 숨기면 여전히 ClassCastException의 여지가 존재하므로 꼭 검증후에 `@SuppressWarnings("unchecked")`를 달도록 한다.

그리고 `@SuppressWarnings("unchecked")`는 최대한 좁은 범위에 적용해야한다. 넓은 범위에 적용한다면 의도하지 않은 비검사 경고를 놓칠 수 있다. `@SuppressWarnings`는 클래스, 필드, 메서드, 변수, 인자 등 모든 선언부에 사용가능하다.
Expand Down

0 comments on commit fb7e2b2

Please sign in to comment.