일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- github
- Public
- 이펙티브 자바
- 우리카드
- 뮤텍스
- 운영체제
- CS
- 공채
- 프로그래밍
- 자바
- spring
- 깃허브
- 개발
- 신입
- 신입사원
- 컴퓨터과학
- 스터디
- 알고리즘
- java
- 컴퓨터공학
- 메모리
- IT
- 디지털
- 스프링
- 세마포어
- package-private
- 정보처리기사
- Effective Java
- 깃
- OS
Archives
- Today
- Total
주니어 개발자 성장기
아이템 12. toString을 항상 재정의하라. 본문
기본 구현
Object
에서 기본적으로 제공하는 toString
은 클래스명 + 16진수hashCode
값을 반환한다. ← 그닥 유용하지 않다.
재정의
해당 데이터에 적합한 형태로 표현해주는 것이 좋다. toString
에 들어가는 필드(혹은 정보)는 외부에 공개할 수 있는 데이터만 공개하는 것이 좋다. 외부에 노출 할 수없는 정보(사용자 정보)는 최대한 숨기자.
Getter
를 제공하여toString
에 나오는 정보를 접근 가능하게 하자. 어차피 해당 정보를 얻기 위해서 클라이언트가 정해진 포맷에 따라toString
을 파싱할 것이다.- IDE나 Lombok을 사용할 수도 있지만 자동으로 생성되는 포맷이 원하는 포맷이 아닐 수도 있다. 그럴 때는 직접 정의하자.
- 아래와 같이 정적 팩토리 메서드로 정해진 포맷이 입력되면 파싱하여 객체를 만들 수도 있다.
public static PhoneNumber of(String phoneNumberString) {
String[] split = phoneNumberString.split("-");
PhoneNumber phoneNumber = new PhoneNumber(
Short.parseShort(split[0]),
Short.parseShort(split[1]),
Short.parseShort(split[2]));
return phoneNumber;
}
'Java > 이펙티브 자바' 카테고리의 다른 글
방어적 복사, 얕은 복사, 깊은 복사 (0) | 2023.09.02 |
---|---|
아이템 13. Clone 재정의는 주의해서 진행하라. (0) | 2023.09.02 |
아이템 11. equals를 재정의하려거든 hashCode도 재정의하라. (0) | 2023.09.01 |
아이템 10. equals는 일반 규약을 지켜 재정의하라 (0) | 2023.07.28 |
아이템 9. try-finally 보다 try-with-resources를 사용하라. (0) | 2023.07.23 |