Java
Serializable ์ธํฐํ์ด์คDTO๋ฅผ ์ฌ์ฉํ ๋ Serializable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ณ ์๋๋ฐ, ๊ทธ ์ด์ ๋ฅผ ์์๋ณด์. Serializable ์ธํฐํ์ด์ค์ API์ ์ ์ธ๋ ๋ณ์๋ ๋ฉ์๋๊ฐ ์๋ค.๊ตฌํํด์ผํ ๋ฉ์๋๊ฐ ์๋ฌด๊ฒ๋ ์๋๋ฐ ์ ์์๊น. ๐ ์๋ฐ์์ ์ง๋ ฌํ๋ ? ๐ ์๋ฐ ์์คํ
๋ด๋ถ์์ ์ฌ์ฉ๋๋ ๊ฐ์ฒด ๋๋ ๋ฐ์ดํฐ(JVM์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผ)๋ฅผ ์ธ๋ถ์ ์๋ฐ ์์คํ
์์๋ ์ฌ์ฉํ ์ ์๋๋ก byte ํํ๋ก ๋ฐ์ดํฐ ๋ณํํ๋ ๊ธฐ์ (์ง๋ ฌํ)๊ณผ byte๋ก ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๋ ๊ธฐ์ (์ญ์ง๋ ฌํ)์ด๋ค. Serializable์ด ํ์ํ ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.์์ฑํ ๊ฐ์ฒด๋ฅผ ํ์ผ๋ก ์ ์ฅํ ๋์ ์ฅํ ๊ฐ์ฒด๋ฅผ ์ฝ์ ๋๊ฐ์ฒด๋ฅผ ๋ค๋ฅธ ์๋ฒ๋ก ๋ณด๋ผ ๋๋ค๋ฅธ ์๋ฒ์์ ์์ฑํ ๊ฐ์ฒด๋ฅผ ๋ฐ์ ๋๐ ์ฆ, ๋ง๋ ํด๋์ค๊ฐ ..
Java
์ ๋ค๋ฆญ์ด๋ ?ํ์
ํ ๋ณํ์์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์ ์ฌ์ ์ ์์ ์ค public class CastingDto implements Serializable { private Object object; public void setObject(Object object) { this.object = object; } public Object getObject() { return object; }} โณ๏ธ ์์ ์ฝ๋์์ ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ฉดpublic class CastingGenericDto implements Serializable { private T object; public void setObject(T obj) { this.object..
Java/๐ Effective Java
61. ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
๋ณด๋ค๋ ๊ธฐ๋ณธ ํ์
์ ์ฌ์ฉํ๊ธฐint, double, boolean ๐ ๊ธฐ๋ณธํ์
String, List ๐ ์ฐธ์กฐํ์
Integer, Double, Boolean ๐ ๊ฐ๊ฐ์ ๊ธฐ๋ณธ ํ์
์ ๋์ํ๋ ์ฐธ์กฐํ์
๐ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
โณ๏ธ ๊ธฐ๋ณธ ํ์
๊ณผ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ์ฐจ์ด์ ๊ธฐ๋ณธ ํ์
์ ๊ฐ๋ง ๊ฐ์ง๊ณ ์์ผ๋, ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ๊ฐ์ ๋ํด ์๋ณ์ฑ์ด๋ ์์ฑ์ ๊ฐ์ง ๐ ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ๋ ์ธ์คํด์ค๋ ๊ฐ์ด ๊ฐ์๋ ์๋ก ๋ค๋ฅด๋ค๊ณ ์๋ณ๋ ์ ์์๊ธฐ๋ณธ ํ์
์ ๊ฐ์ ์ธ์ ๋ ์ ํจํ๋, ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
์ ์ ํจํ์ง ์์ ๊ฐ์ธ null์ ๊ฐ์ง ์ ์์๊ธฐ๋ณธ ํ์
์ด ๋ฐ์ฑ๋ ๊ธฐ๋ณธ ํ์
๋ณด๋ค ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ฉด์์ ๋ ํจ์จ์ โณ๏ธ ์ฃผ์ํด์ผํ ์ Comparator naturalOrder = (i, j) ..
Java/๐ Effective Java
57. ์ง์ญ๋ณ์์ ๋ฒ์๋ฅผ ์ต์ํํ๊ธฐ์ง์ญ๋ณ์์ ์ ํจ ๋ฒ์๋ฅผ ์ต์๋ก ์ค์ฌ ์ฝ๋ ๊ฐ๋
์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ถ์๐ ๊ทธ ๋ฐฉ๋ฒ์ "๊ฐ์ฅ ์ฒ์ ์ฐ์ผ ๋ ์ ์ธํ๊ธฐ" & ๋ฉ์๋๋ฅผ ์๊ฒ ์ ์งํ๊ณ ํ ๊ฐ์ง ๊ธฐ๋ฅ์ ์ง์คํ๊ธฐ โณ๏ธ ์ง์ญ๋ณ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ธํด๋๋ฉด...? ๋ฏธ๋ฆฌ ์ ์ธํด๋๋ฉด ์ฝ๋๊ฐ ์ด์์ ํด์ ธ ๊ฐ๋
์ฑ์ด ๋จ์ด์ง ๋ณ์๋ฅผ ์ค์ ๋ก ์ฌ์ฉํ๋ ์์ ์๋ ํ์
๊ณผ ์ด๊น๊ฐ์ด ๊ธฐ์ต๋์ง ์์ ์ ์์ ๐ ๊ฑฐ์ ๋ชจ๋ ์ง์ญ๋ณ์๋ ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํํด์ผ ํจ๋ง์ฝ, ์ด๊ธฐํ์ ํ์ํ ์ ๋ณด๊ฐ ์ถฉ๋ถํ์ง ์๋ค๋ฉด ์ถฉ๋ถํด์ง ๋๊น์ง ์ ์ธ์ ๋ฏธ๋ค์ผ ํจ๋ค๋ง try-catch ๋ฌธ์์๋ ์์ธ์ธ๋ฐ, ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ํํ์์์ ๊ฒ์ฌ ์์ธ๋ฅผ ๋์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด try ๋ธ๋ก ์์์ ์ด๊ธฐํํด์ผ ํจ ๐ ๊ทธ๋ ์ง ์์ ์ ์์ธ๊ฐ ๋ธ๋ก์ ๋์ด ๋ฉ์๋์๊น์ง ์ ..
Java/๐ Effective Java
38. ํ์ฅํ ์ ์๋ ์ด๊ฑฐ ํ์
์ด ํ์ํ๋ฉด ์ธํฐํ์ด์ค ์ฌ์ฉํ๊ธฐ์ด๊ฑฐ ํ์
์์ฒด๋ ํ์ฅํ ์ ์์ง๋ง, ์ธํฐํ์ด์ค์ ๊ทธ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ธฐ๋ณธ ์ด๊ฑฐ ํ์
์ ํจ๊ป ์ฌ์ฉํด ๊ฐ์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ public interface Operation { double apply(double x, double y);}public enum BasicOperation implements Operation { PLUS("+") { public double apply(double x, double y) { return x + y; } }, MINUS("-") { public double apply(double x, double y) { return x - y; } }, TIMES("*"..
Java/๐ Effective Java
34. int ์์ ๋์ ์ด๊ฑฐ ํ์
์ฌ์ฉํ๊ธฐ์ด๊ฑฐ ํ์
= ์ผ์ ๊ฐ์์ ์์ ๊ฐ์ ์ ์ํ ๋ค์, ๊ทธ ์ธ์ ๊ฐ์ ํ์ฉํ์ง ์๋ ํ์
โด๏ธ ์ด๊ฑฐ ํจํด์ ๋จ์ ํ์
์์ ๋ณด์ฅ Xํํ๋ ฅ ์ข์ง Xํ๋ฒํ ์์๋ฅผ ๋์ดํ ๊ฒ์ด๋ผ ์์์ ๊ฐ์ด ๋ฐ๋๋ฉด ํด๋ผ์ด์ธํธ๋ ๋ฐ๋์ ๋ค์ ์ปดํ์ผํด์ผ ํจ์ ์ ์์๋ ๋ฌธ์์ด๋ก ์ถ๋ ฅํ๊ธฐ ๊น๋ค๋ก์๐ ์ด๊ฑฐ ํ์
(ENUM type)์ด ๋์public enum Apple {FUJI, PIPPIN, GRANNY_SMITH}public enum Orange {NAVEL, TEMPLE, BLOOD}โณ๏ธ ์ด๊ฑฐ ํ์
์ด๊ฑฐ ํ์
์์ฒด๋ ํด๋์ค์์ ํ๋๋น ์์ ์ ์ธ์คํด์ค๋ฅผ ํ๋์ฉ ๋ง๋ค์ด public static final ํ๋๋ก ๊ณต๊ฐ๋ฐ์์ ์ ๊ทผํ ์ ์๋ ์์ฑ์๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฏ๋ก ์ฌ์ค์ finalํด๋ผ์ด์ธ..
Java/๐ Effective Java
์ ๋ค๋ฆญ์๋ฐ 5๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ๊ฐ์ฒด๋ฅผ ๊บผ๋ผ ๋๋ง๋ค ํ๋ณํํ ํ์ ์์์ปฌ๋ ์
์ด ๋ด์ ์ ์๋ ํ์
์ ์ปดํ์ผ๋ฌ์ ์๋ ค์ค ๐ ์ปดํ์ผ๋ฌ๋ ์์์ ํ๋ณํ ์ฝ๋๋ฅผ ์ถ๊ฐํด๋์ค์ ์ธํฐํ์ด์ค ์ ์ธ์ ํ์
๋งค๊ฐ๋ณ์๊ฐ ์ฌ์ฉ๋จ ๐ ์ ๋ค๋ฆญ ํด๋์ค or ์ ๋ค๋ฆญ ์ธํฐํ์ด์ค = ์ ๋ค๋ฆญ ํ์
๋งค๊ฐ๋ณ์ํ ํ์
= List ๐ String์ ์ ๊ท ํ์
๋งค๊ฐ๋ณ์ E (List)์ ํด๋นํ๋ ์ค์ ํ์
๋งค๊ฐ๋ณ์ 26. Raw ํ์
์ ์ฌ์ฉํ์ง ๋ง๊ธฐ raw ํ์
์ด๋ ์ ๋ค๋ฆญ ํ์
์์ ํ์
๋งค๊ฐ๋ณ์๋ฅผ ์ ํ ์ฌ์ฉํ์ง ์์ ๋๋ฅผ ๋งํจex). List์ raw ํ์
์ List์ ๐ ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด, ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ํ์ฐธ ๋ค์ธ ๋ฐํ์์์ผ ์์์ฑ ์ ์๊ธฐ ๋๋ฌธ ! โณ๏ธ ์ปฌ๋ ์
์ raw ํ์
์ ์ฌ์ฉํ ๊ฒฝ์ฐ // Stamp ์ธ์คํด์ค๋ง ์ทจ๊ธprivate f..
Java/๐ Effective Java
23. ํ๊ทธ ๋ฌ๋ฆฐ ํด๋์ค๋ณด๋ค๋ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ ํ์ฉํ๊ธฐํ๊ทธ ๋ฌ๋ฆฐ ํด๋์ค ๐ ์์ ํ๋๋ ์ธํฐํ์ด์ค, ์ด๊ฑฐํ(enum) ๋ฑ์ ํ์ฉํด์ ํน์ ๊ฐ์ฒด๊ฐ ์ด๋ค ์นดํ
๊ณ ๋ฆฌ์ ์ํ๋์ง ์๋ณclass Figure { enum Shape {RECTANGLE, CIRCLE}; // ํ๊ทธ ํ๋ - ํ์ฌ ๋ชจ์์ ๋ํ๋ธ๋ค. final Shape shape; // ๋ค์ ํ๋๋ค์ ๋ชจ์์ด ์ฌ๊ฐํ(RECTANGLE)์ผ ๋๋ง ์ฐ์ธ๋ค. double length; double width; // ๋ค์ ํ๋๋ ๋ชจ์์ด ์(CIRCLE)์ผ ๋๋ง ์ฐ์ธ๋ค. double radius; // ์์ฉ ์์ฑ์ Figure(double radius) { shape = Shape.CIRCLE; ..