์ ์ ๋ฉ์๋(Static Method)์ ์ ์ ํ๋(Static Field)๋ง์ ๋ด์ ํด๋์ค์ ์
1) ๊ธฐ๋ณธ ํ์ ๊ฐ์ด๋ ๋ฐฐ์ด ๊ด๋ จ ๋ฉ์๋๋ค์ ๋ชจ์๋์ ํด๋์ค
- java.lang.Math ํด๋์ค๋ 2๊ฐ์ ๋ณ์์ 70์ฌ๊ฐ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ ๋ถ static์ด๋ค.
๋ง์ , ๊ณฑ์ , ์ต๋๊ฐ ๊ตฌํ๊ธฐ ๋ฑ ๊ธฐ๋ณธ์ ์ธ ์ํ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ๋ ๋งํผ, ๊ฐ์ฒด๋ง๋ค ๋ค๋ฅธ ์ํ๊ฐ๊ณผ ๋ก์ง์ ๊ฐ์ง๊ฒ ํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ณ์์ ๋ฉ์๋๋ฅผ static์ผ๋ก ๊ตฌํํ ๊ฒ ์๋๊น ์ถ๋ค.
2) ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๋ ์ ์ ๋ฉ์๋(ํน์ ํฉํ ๋ฆฌ)๋ฅผ ๋ชจ์๋์ ํด๋์ค
- java.util.Collections๋ ๋ฌธ์ ์ด๋ฐ์ ๋๋๊ณ ์ปฌ๋ ์ ์ ๋ฆฌํดํ๊ฑฐ๋ ์ปฌ๋ ์ ์ ๋ค๋ฃจ๋ static method๋ง์ ํฌํจํ๊ณ ์๋ค๊ณ ์ด์ผ๊ธฐํ๋ค.
๊ทธ๋ฐ๋ฐ, ์ฑ ์์ ์ด์ผ๊ธฐํ๋ "ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ค๋ค" ๊ฐ ๊ตฌ์ฒด์ ์ผ๋ก ๋ฌด์จ ์๋ฏธ์ธ๊ฐ ์ถ๋ค.
API ๋ฌธ์๋ฅผ ํ์ธํด๋ณด๋ฉด Collections ํด๋์ค์ ๋ฉ์๋๋ค์ boolean, int์ ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ ๋ฆฌํดํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๋๋ถ๋ถ Collection, List์ ๊ฐ์ ์ธํฐํ์ด์ค ํ์ ์ผ๋ก ๊ฐ์ ๋ฐ๊ณ , ๋ ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํดํ๋ค.
์ด์ค์์ checkedList๋ผ๋ ์๋ ๋ฉ์๋๋ฅผ ๋ณด๋ฉด List<E>์ Class<E> ํ์ ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ List<E>๋ฅผ ๋ฆฌํดํ๋ค.
๋ฑํ List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ฃผ๋ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ์ ๋ค์๋๋ฐ, ๋ด์ฉ์ ์์ธํ ๋ณด๋์ํฉ์ ๋ฐ๋ผ CheckedRandomAccessList ํน์ CheckedList ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด์ค๋ค. ์ฐพ์๋ณด๋ฉด ๋ ๊ฐ ํด๋์ค ๋ชจ๋ Collections ๋ด๋ถ์์ List๋ฅผ ์์๋ฐ์ ๊ตฌํ๋์ด ์๋ค.
์๋ง ์ด๋ฐ ์์ผ๋ก ๋ฉ์๋ ์๊ทธ๋์ณ์๋ List, Collection ๋ฑ์ ์ธํฐํ์ด์ค ํ์ ์ ๋ฆฌํดํ๋ค๊ณ ๋์ด ์์ด๋ ์ค์ ๋ก๋ ํน์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํด์ค๋ค๋ ์๋ฏธ์ด์ง ์์๊น ์ถ๋ค.
3) Final ํด๋์ค์ ๊ด๋ จํ ๋ฉ์๋๋ค์ ๋ชจ์๋์ ํด๋์ค
- ์ผ๋จ, final ํค์๋๊ฐ ๋ถ์ด ์๋ ํด๋์ค๋ฅผ ์์๋ฐ์์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค.
Formatter๋ผ๋ ํด๋์ค๊ฐ ์๋ค. ํ ๋ฒ๋ ์จ๋ณธ์ ์ ์๋๋ฐ, ์ฌํผ ์ด ํด๋์ค์๋ final ํค์๋๊ฐ ๋ถ์ด์๋ค. Formatter์ toString() ๋ฉ์๋๋ฅผ ์ธ๋๋ง๋ค ๋์ผํ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๊ณ ์ถ์ด์ Formatter๋ฅผ ์์๋ฐ๋ ํด๋์ค์ธ ExtendFinalClass๋ฅผ ๋ง๋๋ ค๊ณ ํ๋ค๊ณ ํ์.
ํ์ง๋ง IDE๊ฐ ์น์ ํ๊ฒ๋ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ๋ฑ์ด์ค๋ค. Final์ด๋ผ๋ ํค์๋ ์์ฒด์ '๋ณ๊ฒฝ๋ ์ ์๋'์ด๋ผ๋ ์๋ฏธ ์ด์ธ์๋ 'ํ์ฅ๋ ์ ์๋' ๋ผ๋ ์๋ฏธ๋ ํฌํจ๋์ด ์๋ ๊ฒ ์๋๊น ์ถ๋ค.
์ฌํผ, ์ด๋ด ๋ ์ฌ์ฉํ ์ ์๋ ํ๋์ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ด Fomatter๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ๋ static ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ณด๋ ๊ฒ์ด๋ค.
์ผ๋ค Formatter๊ฐ ๋ญํ๋์ง๋ ์ ๋ชจ๋ฅด๋ ํด๋์ค์ธ๋ฐ, final class๋ผ๋ ์ด์ ํ๋๋ง์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ถ์ ์ ํ ์์์ด๊ธฐ๋ ํ์ง๋ง ์กฐ์์์จ๊ฐ ๋๋ต ์ด๋ฐ ๋๋์ผ๋ก ๋งํ ๊ฒ ๊ฐ๋ค.
์ธ์คํด์คํ๋ฅผ ๋ง์ผ๋ ค๋ฉด Private ์์ฑ์๋ฅผ ์ถ๊ฐํ๋ผ
์์ ๊ฐ์ด '์ ์ ๋ฉค๋ฒ๋ง ๋ด์ ์ ํธ๋ฆฌํฐ ํด๋์ค'๋ ๋๊ฐ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ค๊ณ ์ค๊ณํ ํด๋์ค๋ค์ด ์๋๋ค. ์ฆ, ์ฌ์ฉ์๊ฐ ExtendFinalClass extendFinalClass = new ExtendFinalClass()๋ฅผ ํ๊ฒ ๋ง๋ค์ด์๋ ์ ๋๋ค. ํ์ง๋ง ๋ด๊ฐ ๋ง๋ ExtendFinalClass๋ ์๋ 14๋ฒ์งธ ์ค์ฒ๋ผ ์ธ์คํด์คํ๊ฐ ๊ฐ๋ฅํ๋ค.
๋น์ฐํ๋ค. ๋ด๊ฐ ๋ฐ๋ก ์์ฑ์๋ฅผ ๋ช ์ํ์ง ์์๊ธฐ ๋๋ฌธ์, ์ปดํ์ผ๋ฌ๊ฐ ์๋์ ๊ฐ์ด publicํ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด์ฃผ์๋ค.
์ด๋ ๊ฒ ๋๋ฉด ExtendFinalClass์ ์๋๋ฅผ ์ ๋ชจ๋ฅด๋ ์ฌ์ฉ์๋ ๋ง์๋๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํด๋ฒ๋ฆด ์๋ ์๋ค. ์ด๋ฌํ ์ํฉ์ ๋ง๊ธฐ ์ํด ์๋์ ๊ฐ์ด ์ ๊ทผ ์ ์ด์๊ฐ private์ธ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด๋๋ค.
์ด๋ ๊ฒ ๋๋ฉด ์ปดํ์ผ ์์ publicํ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๊ฒจ๋์ง๋ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒ๋ ๋ถ๊ฐ๋ฅํ๊ฒ ๋๋ค.
9๋ฒ์งธ ์ค์ AssertionError()๋ ExtendFinalClass ๋ด๋ถ์์๋ ์ธ์คํด์ค๋ฅผ ๋ง๋๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ๋ฃ์ด๋์ ๋ก์ง์ด๋ค. ์ ๋ ๊ฒ ์๋ฌ(Exception์ด ์๋ Error์ด๋ค)๋ฅผ ๋์ง๋๋ก ํด๋๊ณ 18๋ฒ์งธ ๋ผ์ธ์์ ExtendFinalClass ๋ด๋ถ์์ ์์ฑ์๋ฅผ ํธ์ถํ ์ ์๊ฒ ํด๋ณด์๋ค.
ExtendFinalClass๋ฅผ ์ฌ์ฉํ๋ Item04 ํ๋ก๊ทธ๋จ์ ์คํํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์๋ฌ๋ฅผ ๋ฑ์ผ๋ฉฐ ํ๋ก๊ทธ๋จ์ ๋ฉ์ถฐ๋ฒ๋ฆฐ๋ค.
AssertionError์ ๋ํ ์ฌ๋ด
์ฅ์ ์ฃผ์ ์๋ ๋ฒ์ด๋์ง๋ง, ์์ฑ์ ์์ Error๊ฐ ์๋ RuntimeException์ ๋์ง๋๋ก ํ๋ฉด ์๋์ ๊ฐ์ด ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋ค.
AssertionError๋ฅผ ์ฌ์ฉํ์ ๋์๋ ๊ทธ๋๋ "do something"์ ์ถ๋ ฅํ๋๋ฐ, RuntimeException์ ์๋ฌด๊ฒ๋ ๋์ง์ง ์๋๋ค. ์ค๊น?
๊ฒฐ๋ก
- ์ ์ ํ๋์ ์ ์ ๋ฉ์๋๋ง์ ํฌํจํ๋ ํด๋์ค๋ค์ ๋๊ฐ ์ ํธ๋ฆฌํฐ ์ฑ๊ฒฉ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ ํธ๋ฆฌํฐ ์ฑ ํด๋์ค๋ค์ ๋๊ฐ ์ธ์คํด์คํ๊ฐ ๋์ด์๋ ์ ๋๋ค.
- ์ธ์คํด์คํ๋ฅผ ๋ง์ผ๋ ค๋ฉด private ์์ฑ์๊ฐ ๋ถ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๊ผญ ๋ง๋ค์ด๋์ด๋ผ. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ์์์ publicํ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.
- ์กฐ๊ธ ๋ ์๊ฒฉํ๊ฒ ์ธ์คํด์คํ๋ฅผ ๋ง๊ณ ์ถ๋ค๋ฉด, private ๊ธฐ๋ณธ์์ฑ์ ๋ด๋ถ์์ ์๋ฌ๋ฅผ ๋ฑ๋๋ก ํด๋ผ.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฑํ ํ๋ก๊ทธ๋จ] ํด๋์ค ServerSocket๊ณผ Socket + TCP ์์ผ (0) | 2021.08.15 |
---|---|
[์ฑํ ํ๋ก๊ทธ๋จ] ํด๋์ค InetAddress (0) | 2021.08.15 |