들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 핵심 정리 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 같은 클래스다. 그런데 이 때까지 우리가 컨테이너를 사용해왔던 방법은..
들어가기 전 이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 이 글의 요약 완벽공략 45. ThreadLocal (쓰레드 지역 변수) 모든 멤버 변수는 기본적으로 여러 쓰레드에서 공유해서 쓰일 수 있다. 이 때 쓰레드 안전성과 관련된 여러 문제가 발생할 수 있다. 경합 (Race-Condition) 교착상태(Dead Lock) LiveLock : 쓰레드끼리 Lock만 계속 교체하는 상태다. 쓰레드 지역 변수를 사용하면 동기화를 하지 않아도 한 쓰레드에서만 접근 가능한 값이기 때문에 안전하게 사용할 수 있다. 한 쓰레드 내에서 공유하는 데이터로, 메서드 매개변수에 매번 전달하지 않고 전역변수처럼 사용할 수 있다. ThreadLocal (쓰레드 로컬)이란? 쓰레드 로컬은 쓰레드 범위의 변수다. ..