제네릭 타입의 형변환이 가능할까?
제네릭 타입의 형변환은 일반적으로 unckecked 경고를 발생한다.
컴파일러가 제네릭 타입의 안전성을 보장할 수 없기 때문.
stringList는 List<String>타입으로 Hello, World란 요소를 가지고있다.
// String을 저장하는 리스트
List<String> stringList = new ArrayList<>();
stringList.add("Hello");
stringList.add("World");
이 stringList를 Object형으로 변환하여 출력한다.
(List<Object>) (List<?>) stringList; 이때 경고를 발생할 수 있으나 코드 실행시에는 정상적으로 동작한다.
// Object로 형변환
List<Object> objectList = (List<Object>) (List<?>) stringList;
// 출력
for (Object obj : objectList) {
System.out.println(obj);
}
Hello
World
제네릭 타입 형변환시 이가 안전한지를 판단하고 사용하며,
가능한한 형변환을 최소화하는 것이 좋다.
'JAVA' 카테고리의 다른 글
각 열거형 상수에 값을 할당하다: enum Sample {data(value)}, getValue() (0) | 2024.02.14 |
---|---|
열거형 enums 서로 관련된 상수를 편리하게 선언하다 (0) | 2024.02.14 |
다양한 타입의 인자를 처리할 수 있도록 하는 메서드: Generics 제네릭 메서드 (0) | 2024.02.14 |
<? extends *> 와일드카드, 보다 유연한 타입제한 (0) | 2024.02.14 |
제한된 제네릭 클래스 <T extends *> (0) | 2024.02.14 |