1장
클래스의 인스턴스를 얻는 전통적인 수단은 public 생성자
정적 팩토리 메서드(Static factory method)란
이름을 가질 수 있다.
반드시 새로운 객체를 만들 필요가 없다
//예시1
public static Boolean valueOf(boolean b){
//미리 정의된 상수를 리턴한다. 매번 새로운 객체를 만들필요가 없다.
return b ? Boolean.TRUE : Boolean.FALSE;
}
//예시2
Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
Integer c = Integer.valueOf(200);
// a와 b는 동일한 객체를 참조할 수 있음 (캐싱)
System.out.println(a == b); // true
System.out.println(a == c); // false
반환 타입의 하위 타입 객체를 반환할 수 있는 능력이 있다.
Collections
클래스는 List
, Set
, Map
등 인터페이스의 다양한 구현체를 제공하지만, 그 구현체들은 모두 비공개(non-public) 클래스.Collections
의 정적 메서드를 통해서만 사용할 수 있음.입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다.
리턴하는 객체의 클래스가 public static 팩토리 메소드를 작성할 시점에 반드시 존재하지 않아도 된다.
참고할만한 소스
https://apieceofcoding.gitbook.io/java/modifier/static-factory-method
상속을 하려면 public이나 protected 생성자가 필요해서 정적 팩터리 메서드만 제공하면 하위 클래스를 만들 수 없다.
정적 팩터리 메서드는 프로그래머가 찾기 어렵다.
정리