varargs
-
아이템 32. 제네릭과 가변인수를 함께 쓸 때는 신중하라.JAVA/Effective java 2021. 3. 20. 01:02
가변인수 메서드 (varargs) 와 제네릭은 자바 5 때 함께 추가되었으니 서로 잘 어우러지리라 기대하겠지만, 그렇지 않다. 가변인수는 메서드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해주는데, 구현 방식에 허점이 있다. 가변인수 메서드를 호출하면 가변인수를 담기 위한 배열이 자동으로 하나 만들어지는데 내부로 감춰야 했을 이 배열을 그만 클라이언트에 노출하는 문제가 생겼고 그 결과 varargs 매개변수에 제네릭이나 매개변수화 타입이 포함되면 알기 어려운 컴파일 경고가 발생한다. 아이템 28에서 실체화 불가 타입은 런타임에는 컴파일타임보다 타입 관련정보를 적게 담고 있음을 배웠다. 그리고 거의 모든 제네릭과 매개변수화 타입은 실체화되지 않는다. 메서드를 선언할 때 실체화 불가 타입으로 var..