Chapter 02: 객체 생성과 파괴
객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하는 법
올바른 객체 생성 방법에 대한 설명
유틸성 클래스
단순히 정적 메소드와 정적 필드를 담은 클래스
이런 클래스는 인스턴스화를 할 필요가 없다
→ 인스턴스화를 막아보자.
이런 유틸 성격을 가지는 클래스는 자바 / 스프링 쉽게 찾아볼 수 있다.
java.lang.Math
java.util.Arrays
java.util.Collections
Collections는 특정 인터페이스의 구현하는 객체들을 생성해 주는 정적 팩토리 메소드를 모아놓았다.
사용자는 해당 구현체를 몰라도 사용할 수 있다는 관점에서 알아야 하는 개념적인 무게가 줄었다고 볼 수 있다.
public final class Math {
private Math() {}
}
public class Arrays {
private Arrays() {}
}
public class Collections {
private Collections() {}
}
전부 생성자의 접근 제어자를 private 설정하였다.
private으로 설정하면 사실 어떤 방식으로도 인스턴스화가 불가능하다 (리플렉션 제외)
final 키워드가 안 붙었으니까 상속이 가능하다고 생각하겠지만
자바에서는 자식 클래스가 부모 클래스의 생성자를 명시적으로든 암묵적으로든 호출하게 되어있다.
그런데 부모 클래스의 생성자가 private 생성자 1개만 존재한다면 컴파일 오류가 일어난다.
또한 당연히 자체 인스턴스화도 불가능하다.
'Computer Sience > Java' 카테고리의 다른 글
[Effective Java] 아이템6: 불필요한 객체 생성을 피하라 (0) | 2024.10.26 |
---|---|
[Effective Java] 아이템5: 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (2) | 2024.10.26 |
[Effective Java] 아이템3: private 생성자나 열거 타입으로 싱글턴임을 보증하라 (1) | 2024.10.25 |
[Effective Java] 아이템2: 생성자에 매개변수가 많다면 빌더를 고려해라 (0) | 2024.10.22 |
[Effective Java] 아이템1: 생성자 대신 정적 팩터리 메소드를 고려해라 (0) | 2024.10.21 |