이펙티브 자바2 [이펙티브자바] 4. 클래스와 인터페이스 1. 클래스와 멤버의 접근 권한을 최소화하라. 1.1. public클래스의 가변필드는 public이 아니어야 한다. 1.2. static final Array 같은 경우 값의 변경이 가능하기 때문에 private으로 만들어라. 더보기 public static final Integer[] VALUES = {1, 2, 3}; //수정 가능 EffectiveJava.VALUES[0] = 1; private static final Integer[] VALUES = {1, 2, 3}; //해결방법 1.불변 리스트로 만들기 public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)); //해결방법 2.복사본을.. 2022. 6. 4. [이펙티브자바] 2. 객체 생성과 파괴 1. 생성자 대신 정적 팩터리 메서드를 고려하라 정적 팩토리메서드의 장점 5가지 1.1 생성자에 대한이름을 가질 수 있다. 1.2 호출마다 인스턴스를 새로 생성하지 않아도 된다. 1.3 하위타입의 객체를 반환할 수 있다. 1.4 입력 매개변수에 따라 매번 다른 클래스의 객체를 반환할 수 있다. 1.5 정적팩터리 메서드를 작성하는 시점에 반환할 클래스의 객체가 존재하지 않아도 된다. 1.5.1 이런 유연함은 서비스 제공자 프레임워크(service provider framework) 의 근간이 된다. 정적 팩토리메서드의 단점 1. 정적팩토리 메소드만 제공하면 하위클래스를 생성할 수 없다. 2. 정적팩토리 메소드는 API문서에 설명이 잘 드러나있지 않는다. 코드 더보기 class EffectiveJava { .. 2022. 4. 30. 이전 1 다음