[Java] private 생성자를 사용하는 이유가 무엇일까

huihui·2021년 4월 5일
0

자바에서 대부분은 public을 사용하여 생성자를 만든다.

그런데 가끔 생성자를 private으로 선언하는 경우가 있다.
해당 클래스가 정적 필드나 정적 메서드만 사용하는 경우가 이에 해당한다.

예를 들어 자바에서 제공하는 Arrays 함수를 보면 다음과 같다.

package java.util;

public class Arrays {

    private Arrays() {}

    public static void sort(int[] a) {
        DualPivotQuicksort.sort(a, 0, 0, a.length);
    }

    public static void sort(int[] a, int fromIndex, int toIndex) {
        rangeCheck(a.length, fromIndex, toIndex);
        DualPivotQuicksort.sort(a, 0, fromIndex, toIndex);
    }

    public static void sort(long[] a) {
        DualPivotQuicksort.sort(a, 0, 0, a.length);
    }

    public static void sort(long[] a, int fromIndex, int toIndex) {
        rangeCheck(a.length, fromIndex, toIndex);
        DualPivotQuicksort.sort(a, 0, fromIndex, toIndex);
    }
    
}

Arrays 클래스가 제공하는 정적 메서드를 사용할 때 굳이 인스턴스를 할 필요가 없다.
그래서 애초에 인스턴스를 막는 목적으로 private을 사용했다고 볼 수 있다.

0개의 댓글