Study/Effective Java
์์ดํ 12. toString์ ํญ์ ์ฌ์ ์ํ๋ผ
sw_develop
2023. 5. 7. 16:28
๐์ํฉ
- Object์ ๊ธฐ๋ณธ toString ๋ฉ์๋๊ฐ ์ฐ๋ฆฌ๊ฐ ์์ฑํ ํด๋์ค์ ์ ํฉํ ๋ฌธ์์ด์ ๋ฐํํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์
- ๋จ์ํ ํด๋์ค_์ด๋ฆ@16์ง์๋ก_ํ์ํ_ํด์์ฝ๋ ๋ฅผ ๋ฐํํจ
- toString์ ์ผ๋ฐ ๊ท์ฝ
- '๊ฐ๊ฒฐํ๋ฉด์ ์ฌ๋์ด ์ฝ๊ธฐ ์ฌ์ด ํํ์ ์ ์ตํ ์ ๋ณด'๋ฅผ ๋ฐํํด์ผ ํจ
- ๋ชจ๋ ํ์ ํด๋์ค์์ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ผ ํจ
- ์ฅ์ - toString์ ์ ๊ตฌํํ ํด๋์ค๋ ๋๋ฒ๊น
ํ๊ธฐ ์ฌ์
- toString ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ println, printf, assert ๊ตฌ๋ฌธ์ ๋๊ธธ ๋, ํน์ ๋๋ฒ๊ฑฐ๊ฐ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ์๋์ผ๋ก ํธ์ถ๋จ
- ์ฆ, ์ง์ ํธ์ถํ์ง ์๋๋ผ๋ ๋ค๋ฅธ ์ด๋๊ฐ์์ ์ฐ์ผ ๊ฒ์
- toString์ ์ ๋๋ก ์ฌ์ ์ํ์ง ์๋๋ค๋ฉด ์ธ๋ชจ์๋ ๋ฉ์์ง๋ง ๋ก๊ทธ์ ๋จ์ ๊ฒ์
- toString ๋ฉ์๋๋ ๊ฐ์ฒด๋ฅผ println, printf, assert ๊ตฌ๋ฌธ์ ๋๊ธธ ๋, ํน์ ๋๋ฒ๊ฑฐ๊ฐ ๊ฐ์ฒด๋ฅผ ์ถ๋ ฅํ ๋ ์๋์ผ๋ก ํธ์ถ๋จ
๐๋ฐฉ๋ฒ
1. toString์ ๊ทธ ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ฃผ์ ์ ๋ณด ๋ชจ๋๋ฅผ ๋ฐํํ๋๊ฒ ์ข์
2. ํฌ๋งท์ ๋ช ์ํ๋ ์๋๋ ์๋๋ฅผ ๋ช ํํ ๋ฐํ์ผ ํจ
/**
* ์ด ์ ํ๋ฒํธ์ ๋ฌธ์์ด ํํ์ ๋ฐํํ๋ค.
* ์ด ๋ฌธ์์ด์ "XXX-YYY-ZZZZ" ํํ์ 12๊ธ์๋ก ๊ตฌ์ฑ๋๋ค.
* XXX๋ ์ง์ญ ์ฝ๋, YYY๋ ํ๋ฆฌํฝ์ค, ZZZZ๋ ๊ฐ์
์ ๋ฒํธ๋ค.
* ๊ฐ๊ฐ์ ๋๋ฌธ์๋ 10์ง์ ์ซ์ ํ๋๋ฅผ ๋ํ๋ธ๋ค.
*
* ์ ํ๋ฒํธ์ ๊ฐ ๋ถ๋ถ์ ๊ฐ์ด ๋๋ฌด ์์์ ์๋ฆฟ์๋ฅผ ์ฑ์ธ ์ ์๋ค๋ฉด,
* ์์์๋ถํฐ 0์ผ๋ก ์ฑ์๋๊ฐ๋ค. ์์ปจ๋ ๊ฐ์
์ ๋ฒํธ๊ฐ 123์ด๋ผ๋ฉด
* ์ ํ๋ฒํธ์ ๋ง์ง๋ง ๋ค ๋ฌธ์๋ "0123"์ด ๋๋ค.
*/
@Override
public String toString() {
return String.format("%03d-%03d-%04d",
areaCode, prefix, lineNum);
}
/**
* ์ด ์ฝ๋ฌผ์ ๊ดํ ๋๋ต์ ์ธ ์ค๋ช
์ ๋ฐํํ๋ค.
* "[์ฝ๋ฌผ #9: ์ ํ=์ฌ๋, ๋์=ํ
๋ ๋น์ , ๊ฒ๋ชจ์ต=๋จน๋ฌผ]"
*/
@Override
public String toString() { ... }
3. toString์ด ๋ฐํํ ๊ฐ์ ํฌํจ๋ ์ ๋ณด๋ฅผ ์ป์ด์ฌ ์ ์๋ API๋ฅผ ์ ๊ณตํ์ - getter
๐ํต์ฌ ์ ๋ฆฌ
- ๋ชจ๋ ๊ตฌ์ฒด ํด๋์ค์์ Object์ toString์ ์ฌ์ ์ํ์
- ์์ ํด๋์ค์์ ์ด๋ฏธ ์๋ง๊ฒ ์ฌ์ ์ํ ๊ฒฝ์ฐ๋ ์์ธ์
- toString์ ์ฌ์ ์ํ ํด๋์ค๋ ์์คํ ์ ๋๋ฒ๊น ํ๊ธฐ ์ฝ๊ฒ ํด์ค
- toString์ ํด๋น ๊ฐ์ฒด์ ๊ดํ ๋ช ํํ๊ณ ์ ์ฉํ ์ ๋ณด๋ฅผ ์ฝ๊ธฐ ์ข์ ํํ๋ก ๋ฐํํด์ผ ํจ