개발로그

Item 32 - 제네릭과 가변인수를 함께 쓸 때는 신중하라

가변인수와 제네릭 가변인수 메서드와 제네릭은 자바 5 때 함께 추가되었지만 잘 어우러지지 않는다. 🙅 가변인수 메서드 구현방식의 허점 🤔 가변 인수 메서드를 호출하면 가변인수를 담기 위한 배열이 자동으로 하나 만들어진다. 이 배열을 내부로 감췄어야 했는데, 클라이언트에 노출해버려서 제네릭이나 매개변수화 타입이 포함되면 컴파일 경고...

Item 30 - 이왕이면 제네릭 메서드로 만들라

제네릭 메서드 메서드도 제네릭으로 만들 수 있다. 매개변수화 타입을 받는 정적 유틸리티 메서드는 보통 제네릭 메서드이다. ex. Collections의 binarySearch, sort 메서드 // 메서드 선언에서 입력 2개와 반환 1개의 원소 타입을 타입 매개변수로 명시 // (타입 매개변수들을 선언하는) 타입 매개변수 목록은 메서드...

Item 26 - 로 타입은 사용하지 말라

클래스와 인터페이스 선언에 타입 매개변수가 쓰이면, 제네릭 클래스 혹은 제네릭 인터페이스라 한다. 또 이들을 통틀어 제네릭 타입이라고 한다. 로 타입(raw type) 제네릭 타입을 하나 정의하면 그에 딸린 로 타입(raw type)도 함께 정의된다. 제네릭 타입에서 타입 매개변수를 사용하지 않을 때를 로 타입이라고 한다. ...

Item 25 - 톱레벨 클래스는 한 파일에 하나만 담으라

소스 파일 하나에 톱레벨 클래스를 여러 개 선언하더라도 자바 컴파일러는 불평하지 않는다. 하지만 아무런 득이 없을 뿐더러 심각한 위험을 감수해야 한다. 한 클래스를 여러 가지로 정의할 수 있다. 그 중 어느 것을 사용할지는 어느 소스 파일을 먼저 컴파일하냐에 따라 달라진다. 두 클래스가 한 파일...