더북(TheBook)

배열 리스트를 다시 쓸 일이 없다면 익명으로 만들어도 좋을 것이다. 그렇다면 요소는 어떻게 추가할까? 요소를 추가하는 방법은 다음과 같다.

invite(new ArrayList<String>() {{ add("Harry"); add("Sally"); }});


중괄호가 두 개라는 점에 유의하자. 바깥쪽 중괄호는 ArrayList<String>의 익명 서브클래스를 만든다. 안쪽 중괄호는 초기화 블록(2장 객체 지향 프로그래밍 참고)이다.

자바의 일반 상식을 겨루는 것이 아니라면 이 기교를 사용하는 것은 권장하지 않는다. 문법이 혼란스럽다는 점 외에도 단점이 몇 가지 있다. 비효율적일 뿐만 아니라 equals 메서드를 구현한 방법에 따라 생성된 객체가 동등성 검사에서 이상하게 작동할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.