들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 완벽 공략 24. Value 기반의 클래스 값 객체는 클래스처럼 생겼지만, 실제로는 int처럼 동작하는 클래스를 의미한다. 값 객체는 다음 특징을 가진다. 식별자가 없고 불변 객체다. 인스턴스가 가지고 있는 필드 값을 기반으로 equals, hashCode, toString을 구현. (동일한지 판단) == 오퍼레이션이 아니라 equals를 사용해서 동등성을 비교해야 함. ==은 주소를 비교하기 때문임. 동일한 객체는 상호교환 가능하다. 값 객체에는 식별자가 존재하면 안된다. 식별자는 같은 객체로 인식도 되는지를 알려주는 녀석인데, 값 객체는 값이 서로 같으면 같은 객체로 판단하기 때문에 식별자가 있으면 안된다. 값 객체의 동일성은 ..
들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 핵심 정리 toString은 간결하면서 사람이 읽기 쉬운 형태의 유익한 정보를 반환해야한다. Object의 toString은 클래스이름@16진수로 표시한 해시 코드 (기본 값) 객체가 가진 정보 중 공개해도 되는 정보만 표시하는 것이 좋다. 값 클래스라면 포멧을 문서에 명시하는 것이 좋으며, 해당 포멧으로 객체를 생성할 수 있는 정적 팩터리나 생성자를 제공하는 것이 좋다 toString이 반환한 값에 포함된 정보를 얻어올 수 있는 API를 제공하는 것이 좋다. toString()은 공개된 정보이기 때문에 각각을 얻어올 수 있는 Getter 메서드를 제공해주는 것이 좋다. 경우에 따라 롬복 또는 IDE를 사용하지 않는게 적절할 수 있..
들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 이 글의 요약 equals()는 가급적이면 재정의하지 않는 것이 최선임. 논리적 동치성은 가지고 있는 값이 같은지로 판단, 객체의 동일성은 같은 주소를 가지는지 판단. equals() 구현시 반사성, 대칭성, 추이성, 일관성, null 아님을 지켜서 구현해야 한다. 상속 구조에서는 equals() 규약을 만족하기 어렵다. 상속 구조에 필드가 추가된 구조라면 equals() 규약을 만족하는 방법이 없음. 상속 구조에 필드가 추가되지 않은 구조라면, 상위 클래스의 equals()를 이용해야함. 상속 구조에 필드가 추가된 경우라면, Composition을 이용해서 equals()를 손쉽게 구현할 수 있음. 아이템 10. equals는 일..
들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 정리한 글입니다. 이 글의 정리 한정적 타입 토큰 ( Class
들어가기 전 이 글은 인프런 백기선님의 이펙티브 자바 강의를 복슴하져 작성한 글입니다. 이 글의 요약 핵심 정리 : 타입 토큰을 사용한 타입 안전 이종 컨테이너 타입 안전 이종 컨테이너 타입안전 이종 컨테이너는 한 타입의 객체만 담을 수 있는 컨테이너가 아니라, 여러 다른 타입 (이종)을 담을 수 있는 타입 안전한 컨테이너. 타입 토큰 타입 토큰은 String.class, Class을 의미한다. 타입 안전 이종 컨테이너 구현 방법 컨테이너가 아니라 "키"를 매개변수화 하라! 하지만 두 가지 단점이 존재한다. 타입 안전 컨테이너 객체란? 컨테이너 객체는 다른 오브젝트를 넣을 수 있는 객체들인데, 예시로는 Map, Set, Optional 같은 클래스다. 그런데 이 때까지 우리가 컨테이너를 사용해왔던 방법은..