Effective JAVA

    Effetive java 3장 정리

    10. euals 는 일반 규약을 지켜 재정의하라 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 것이 아니라 동작하는 객체를 표현하는 클래스가 해당한다. ex) Thread 인스턴스의 '논리적 동치성(logical equality)'을 검사할 일이 없다. 상위 클래스에서 재정의한 equals가 하위 클래스에도 해당된다. ex) AbstractSet → Set 구현체, AbstractList → List 구현체, ... 클래스가 private거나 package-private고 equals 메서드를 호출할 일이 없다. 혹시라도 equals를 호출하는 위험을 막고 싶다면 AssertionError를 던지자. @Override public boolean equals(Object o) { throw new A..

    Effetive java 2장 정리

    1.생성자 대신 정적 팩터리 메서드를 고려해라 public staic Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 이름을 가질 수 있습니다. 메서드를 통해 반환될 객체의 특성을 메서드 이름을 통해 명확히 묘사할 수 있는 장점이 있습니다. 예로는 BigInteger 클래스의 BigInteger.probablePrime 메서드가 있습니다. 호출될 때마다 인스턴스를 새로 생성하지 않아도 됩니다. 이 덕분에 불변 클래스는 인스턴스를 미리 만들어 놓거나, 새로 생성한 인스턴스를 캐싱하여 재활용하는 식으로 불필요한 객체 생성을 피할 수 있습니다. 반환 타입의 하위 타입 객체를 반환할 수 있습니다. 이는 반환할 객체의 클래스를 마음대..