반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- resultMap
- 스프링 부트
- db
- 스프링 빈
- assertThat
- 싱글톤
- springboot
- jdbc
- SQL
- mybatis
- Effective Java
- sqld
- DIP
- DI
- 생성자 주입
- kafka
- 스프링 부트 입문
- assertThrows
- 스프링
- Javascript
- java
- 스프링 프레임워크
- JPA
- 필드 주입
- spring
- 스프링 컨테이너
- 스프링부트
- thymeleaf
- 스프링 부트 기본
- @Configuration
Archives
- Today
- Total
선 조치 후 분석
[Effective Java] 아이템12 - toString을 항상 재정의하라 본문
728x90
반응형
SMALL
toString()은 Object 클래스의 public 메서드이다.
기본적으로 toString()은 "클래스의 이름@hashCode(16진수 변환)" 값을 반환한다.
기본적으로 이 값은 사람이 읽기 어려울 뿐 아니라 쓸모없는 메시지로 남게 된다.
가급적이면 그 객체가 가진 주요 정보 모두를 반환하는 게 좋다.
객체가 크거나 문자열로 표현하기에 적합하지 않다면 요약정보로 표현해도 된다.
toString을 구현할 때 반환값의 포맷 문서화에 따른 장단점
장점 - 포맷을 명시하면, 그 객체는 표준적이고, 명확하고, 사람이 읽을 수 있게 된다.
단점 - 포맷을 명시하면, 평생 그 포맷에 얽매이게 된다. 프로그래머들이 그 포맷에 맞춰 파싱이 필요하다.
반대로 포맷을 명시하지 않는다면,
향후 릴리스에서 정보를 더 넣거나 포맷을 개선할 수 있는 유연성을 얻게 된다.
포맷을 명시하든 아니든 의도는 분명히 알 수 있도록 주석은 달아두자.
/**
* 이 전화번호의 문자열 표현을 반환한다.
* 이 문자열은 "XXX-YYY-ZZZZ" 형태의 12글자로 구성된다.
* XXX는 지역코드, YYY는 프리픽스, ZZZZ는 가입자번호이다.
*
* 전화번호의 각 부분의 값이 너 작아서 자릿수를 채울 수 없다면,
* 앞에서부터 0으로 채워나간다. 예를들어 가입자 번호가 123이라면, 전화번호의 마지막 네 문자는 "0123"이다.
* @return
*/
@Override
public String toString() {
return String.format("%03d-%03d-%04d", areaCode, prefix,lineNum);
}
toString 메서드는 아래 상황에서 자동으로 호출된다.
- printf, println
- 문자열 연결 연산자 (+)
- assert 구문에 넘길 때
- 디버거가 객체를 출력할 때
toString규약
1. 사람이 읽기 쉬운 정보를 반환하라.
2. 모든 하위 클래스에서 재정의하라.
핵심정리
- Object의 toString은 모든 구체 클래스에서 재정의하면 좋다.
- 객체의 정보를 읽기 쉽고 명확하게 작성하자.
- 디버깅과 코딩이 편리해진다.
728x90
반응형
LIST
'Language > Effective Java' 카테고리의 다른 글
[Effective Java] 아이템13 - clone 재정의는 주의해서 진행하라 (0) | 2024.02.26 |
---|---|
[Effective Java] 아이템11 - equals를 재정의하려거든 hashCode도 재정의하라 (0) | 2024.02.20 |
[Effective Java] 아이템10 - equals는 일반 규악을 지켜 재정의하라 (0) | 2024.02.19 |
[Effective Java] 아이템9 - try-finally 대신 try-with-resources를 사용하라 (3) | 2023.11.28 |
[Effective Java] 아이템8 - finalizer와 cleaner 사용을 피하라 (1) | 2023.11.27 |