Java

[Effective Java] 2-4. 객체 생성과 파괴: 인스턴스화를 막으려거든 private 생성자를 사용하라

noahkim_ 2024. 12. 27. 03:12

조슈아 블로크 님의 "Effective Java" 책을 정리한 포스팅 입니다.

 

1. private 생성자

  • 인스턴스를 생성하지 못하게 막기위한 효과적인 방법
  • 컴파일러가 자동으로 생성자를 생성하지 않게 만듬
  • 외부에서 생성자 호출이 불가

 

2. 유틸리티 클래스

  • 주로 메서드만 모아놓은 클래스
  • 클래스 자체에서 직접 메서드를 호출해서 사용하려 설계됨 (인스턴스 생성 X)

 

예시

더보기

Math

public final class Math {
    private Math() {}

    // ...

    @IntrinsicCandidate
    public static double sin(double a) {
        return StrictMath.sin(a); // default impl. delegates to StrictMath
    }

    @IntrinsicCandidate
    public static double cos(double a) {
        return StrictMath.cos(a); // default impl. delegates to StrictMath
    }

    // ...
}

 

Collections

public class Collections {
    
    private Collections() { }
    
    @SuppressWarnings("unchecked")
    public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
    }


    @SuppressWarnings({"unchecked", "rawtypes"})
    public static <T> void sort(List<T> list, Comparator<? super T> c) {
        list.sort(c);
    }
}