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; ..
Java/๐ Effective Java
18. ์์๋ณด๋ค๋ ์ปดํฌ์ง์
์ฌ์ฉ๋ค๋ฅธ ํจํค์ง์ ๊ตฌ์ฒด ํด๋์ค๋ฅผ ์์ํ๋ ์ผ์ ์ํ ๋ฉ์๋ ํธ์ถ๊ณผ ๋ฌ๋ฆฌ ์์์ ์บก์ํ๋ฅผ ๊นจ๋จ๋ฆผ ๐ ์์ ํด๋์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋๋๋์ ๋ฐ๋ผ ํ์ ํด๋์ค์ ๋์์ ์ด์ ์๊ธธ ์ ์์์์ ํด๋์ค๋ ๋ฆด๋ฆฌ์ฆ๋ง๋ค ๋ด๋ถ ๊ตฌํ์ด ๋ฌ๋ผ์ง ์ ์๋๋ฐ, ๊ทธ๋ก ์ธํด ํ์ ํด๋์ค๊ฐ ์ค๋์ํ ์ ์์ โณ๏ธ ์์์ ์๋ชป ์ฌ์ฉํ ์ public class InstrumentedHashSet extends HashSet { private int addCount = 0; public InstrumentedHashSet(){ } public InstrumentedHashSet(int initCap, float loadFactor){ super(i..
Java/๐ Effective Java
15. ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ ๊ถํ์ ์ต์ํ ์ ๊ทผ ์ ํ์๋ฅผ ์ ๋๋ก ํ์ฉํ๋ ๊ฒ์ด ์ ๋ณด ์๋(์บก์ํ)์ ํต์ฌ ๋ชจ๋ ํด๋์ค์ ๋ฉค๋ฒ์ ์ ๊ทผ์ฑ์ ๊ฐ๋ฅํ ํ ์ขํ์ผ ํจํจํค์ง ์ธ๋ถ์์ ์ธ ์ด์ ๊ฐ ์๋ค๋ฉด package-private์ผ๋ก ์ ์ธํ ํด๋์ค์์๋ง ์ฌ์ฉํ๋ package-private ํฑ๋ ๋ฒจ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ ์ด๋ฅผ ์ฌ์ฉํ๋ ํด๋์ค ์์ private static์ผ๋ก ์ค์ฒฉ์ํค๊ธฐโจ public์ผ ํ์๊ฐ ์๋ ํด๋์ค์ ์ ๊ทผ ์์ค์ package-private ํฑ๋ ๋ฒจ ํด๋์ค๋ก ์ขํ๊ธฐ โณ๏ธ ์ ๊ทผ ์์ค private : ๋ฉค๋ฒ๋ฅผ ์ ์ธํ ํฑ๋ ๋ฒจ ํด๋์ค์์๋ง ์ ๊ทผ ๊ฐ๋ฅ package-private : ๋ฉค๋ฒ๊ฐ ์์๋ ํจํค์ง ์์ ๋ชจ๋ ํด๋์ค์์ ์ ๊ทผ ๊ฐ๋ฅ. ์ ๊ทผ ์ ํ์๋ฅผ ๋ช
์ํ์ง ์์์ ๋ ์ ์ฉ๋๋ ํจํค์ง ์ ๊ทผ ์์ค.pro..