불변 클래스란 그 인스턴스의 내부 값을 수정할 수 없는 클래스. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. String, 기본 타입의 박싱된 클래스, BigInteger, BigDecimal 등이 여기에 속한다. 클래스를 불
인스턴스를 생성할 때 클라이언트는 public 생성자 대신 정적 팩토리 메소드를 제공할 수 있다.정적 팩토리란, 클래스의 인스턴스를 반환하는 단순한 정적 메서드.boolean 기본 타입의 박싱 클래스인 Boolean에서 발췌한 코드로 기본 타입 boolean값을 받아
이펙티브자바자바봄 블로그https://javabom.tistory.com/15?category=833277
똑같은 기능의 객체를 매번 생성하는 것은 매번 해당 객체가 GC의 대상이 되며, 객체 생성이 비용이 들게 된다. 따라서 객체 생성 비용을 줄이고, GC를 줄이기 위해 객체 하나를 재사용하자.String을 new로 사용하지 않고 리터럴 값으로 생성하면 상수 풀에 값이 저
equals를 재정의한 클래스는 hashCode도 재정의해야한다. 그렇지 않으면 인스턴스를 HashMap이나 HashSet 같은 컬렉션의 원소로 사용할 때 문제가 발생한다.equals 비교에 사용되는 정보가 변경되지 않았다면, hashCode 도 변하면 안 된다.(애플
equals는 반드시 재정의해야하는 것은 아니다. 잘못 재정의 할 경우 오히려 여러 함정과 문제가 있다. 각 인스턴스가 본질적으로 고유한 경우 값을 표현하는 것이 아니라 동작하는 개체를 표현하는 클래스인 경우예를 들어 Thread 클래스가 있을 때, Object의 eq
상속은 하위 클래스의 캡슐화를 깨기 쉽다. 상위 클래스가 어떻게 구현되었느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다. 하위 클래스의 캡슐화가 깨지고 상위 클래스의 여파가 전달된다.상위 클래스의 메서드를 재정의할 때 self use 자기 사용으로 인해 하위
이펙티브 자바자바봄 블로그https://javabom.tistory.com/77?category=833277
이펙티브 자바자바봄 블로그https://javabom.tistory.com/83?category=833277
이펙티브 자바https://javabom.tistory.com/85?category=833277