본문 바로가기
Programming/Java

[이펙티브자바] 아이템30. 이왕이면 제네릭 메서드로 만들라

by 읽고 쓰는 개발자 2023. 4. 8.

아이템30. 이왕이면 제네릭 메서드로 만들라

핵심정리

  • 매개변수화 타입을 받는 정적 유틸리티 메서드
    • 한정적 와일드카드 타입(아이템 31)을 사용하면 더 유연하게 개선할 수 있다.
    • 컴파일 타입에 타입 안정성 보장 ( 자동으로 런타임때에도 타입 안정성 보장)
    • 메서드에서 사용할 제네릭 타입은 접근지시자와 리턴 타입 사이에 정의 public static <E> Set<E> union(Set<E> s1, Set<E> s2)
  • 제네릭 싱글턴 팩터리
    • 타입이 달라도 하나의 싱글톤 팩터리 메소드를 활용할 수 있다.
    • (소거 방식이기 때문에) 불변 객체 하나를 어떤 타입으로든 매개변수화 할 수 있다.
    • 타입 소거되기 때문에, 같은 메소드인데 타입이 다르다고 해서 새롭게 선언할 필요가 없음
    • 제네릭 타입을 사용하면, 컴파일 후 타입 소거가 되지만 명시적으로 타입 캐스팅을 해주지 않아도 컴파일러가 타입을 알고 필요할 때마다 캐스팅 해주는 코드를 넣어준다.
  • 재귀적 타입 한정
    • 자기 자신의 타입을 활용한 슈퍼타입도 함께 활용하여 타입을 한정하는 것 (타입이 두 번 한정 : 재귀적 타입 한정)
    • ex: String implements Comparable<String> -> <E extends Comparable<E>> 타입 한정에서 사용 가능
    • 자기 자신이 들어간 표현식을 사용하여 타입 매개변수의 허용 범위를 한정한다.

출처 : 백기선님 - 이펙티브 자바 완벽 공략 2부