[Item32] varargs는 신중히
varargs란 메서드 인수의 개수를 클라이언트 측에서 결정할 수 있다는 점에서 개꿀이다 인수를 여러 개 넘기면 내부적으로는 배열을 만들어 담아두고 사용한다 바로 이 부분에서 문제가 되는데 가변 인수를 제네릭 타입으로 넘긴다면 실체화되지 않는 타입으로 배열을 만들기 때문에 타입 안전성이 보장되지 않아 possible heap pollution 경고가 뜬다 매개변수 타입을 변환하지 않고 사용한다면 문제없을 수 있으나 만약 얘를 메서드 내부에서 형 변환하거나 다른 타입을 참조하는 경우엔 ClassCastException이 터지게 된다 힙 오염의 의미는 아래 블로그 글을 참고해보자 아래의 예시는 로 선언해놓고 Double 타입의 요소를 갖고 있어 힙 오염이 발생했다 이 전에 제네릭과 배열을 언급했을 때는 아예..
Java/Effective Java
2022. 3. 11. 19:51