Java/EffectiveJava 썸네일형 리스트형 [EffectiveJava] 4장 클래스와 인터페이스 15. 클래스와 멤버의 접근 권한을 최소화하라 // 보안 허점이 숨어 있다. 해결 방법은 두 가지가 있다. public static final Thing[] VALUES = { ... }; // 첫 번째 : public 배열을 private으로 만들고 public 불변 리스트를 추가하여 해결한다. private static final Thing[] PRIVATE_VALUES = {...}; public static final List VALUES = Collections.unmodifiableList(Arrays.asList(PRIVATE_VALUES)) // 두 번째 : private 배열로 만들고 public 메서드를 추가하는 방어적 복사 private static final Thing[] PRIVA.. [EffectiveJava] 3장 모든 객체의 공통 메서드 10. equals는 일반 규약을 지켜 재정의하라 @Override public boolean equals(Object o) { throw new AssertionError(); // 호출 금지 } // 10-1 잘못된 코드 - 대칭성 위배! public final class CaseInsensitiveString{ private final String s; public CaseInsensitiveString(String s){ this.s = Object.requireNonNull(s); } // 대칭성 위배 @Override public boolean equals(Object o){ if(o instanceof CaseInsensitiveString) return s.equalsIgnoreCase( .. [EffectiveJava] 2장 객체 생성과 파괴 01. 생성자 대신 정적 팩터리 메서드를 고려하라 public static Boolean valuOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } from : 매개 변수를 하나 받아서 해당 타입의 인스턴스를 반환하는 형변환 메서드 Date d = Date.from(instant); of : 여러 매개변수를 받아 적합한 타입의 인스턴스를 반환하는 집계 메서드 Set faceCards = EnumSet.of(JACK, QUEEN, KING); valueOf : from과 of의 더 자세한 버전 BigInteger prime = BigInteger.valueOf(Integer.MAX\_VALUE); instance 혹은 getInstance : (매개변수.. 이전 1 2 다음