조슈아 블로크 님의 "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);
}
}
'Java' 카테고리의 다른 글
[Effective Java] 2-6. 객체 생성과 파괴: 불필요한 객체 생성을 피하라 (0) | 2024.12.27 |
---|---|
[Effective Java] 2-5. 객체 생성과 파괴: 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 (2) | 2024.12.27 |
[Effective Java] 2-3. 객체 생성과 파괴: private 생성자나 열거 타입으로 싱글턴임을 보장하라 (0) | 2024.12.27 |
[Effective Java] 2-2. 객체 생성과 파괴: 생성자에 매개변수가 많다면 빌더를 고려하라 (0) | 2024.12.26 |
[Effective Java] 2-1. 객체 생성과 파괴: 생성자 대신 정적 팩토리 메서드를 고려하라 (0) | 2024.12.26 |