์๋ฐ ๊ณต๋ถ(79)
-
[์ดํํฐ๋ธ ์๋ฐ] Item30. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ๋ฉ์๋๋ก ๋ง๋ค๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item30. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ๋ฉ์๋๋ก ๋ง๋ค๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ. (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIA hyejin.tistory.com ํด๋์ค์ ๊ฐ์ด ๋ฉ์๋๋ ์ ๋ค๋ฆญ์ผ๋ก ๋ง๋ค ์ ์๋๋ฐ, ๋งค๊ฐ๋ณ์ํ ํ์ ..
2023.03.21 -
[์ดํํฐ๋ธ ์๋ฐ] Item29 ์๋ฒฝ๊ณต๋ต. ํ์ ์ ํ์ ๋งค๊ฐ๋ณ์
[์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ. ํ์ ์ ํ์ ๋งค๊ฐ๋ณ์ : ๋งค๊ฐ๋ณ์ํ ํ์ ์ ํน์ ํ ํ์ ์ผ๋ก ํ์ ์ง๊ณ ์ถ์ ๋ ์ฌ์ฉํ ์ ์๋ค. public class Stack { private Number[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACTIY = 16; public Stack() { elements = new Number[DEFAULT_INITIAL_CAPACTIY]; } public void push(E e) { ensureCapacity(); elements[size++] = e; } public E pop() { if (size == 0) { throw new Empt..
2023.03.20 -
[์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item29. ์ด์์ด๋ฉด ์ ๋ค๋ฆญ ํ์ ์ผ๋ก ๋ง๋ค๋ผ. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); } public Object pop() { if (size == 0) { throw new EmptyStackException(); } Object result = elements[--size]; elements[s..
2023.03.20 -
[์ดํํฐ๋ธ ์๋ฐ] Item28 ์๋ฒฝ๊ณต๋ต. @SafeVarags
[์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ. (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ. ๋ฐฐ์ด๊ณผ ์ ๋ค๋ฆญ ํ์ ์๋ ์ค์ํ ๋๊ฐ์ง ์ฐจ์ด์ ์ด ์๋ค. 1๏ธโฃ ๋ฐฐ์ด์ ๊ณต๋ณ์ด๊ณ , ์ ๋ค๋ฆญ์ ๋ถ๊ณต๋ณ์ด๋ค. ๊ณต๋ณ, ๋ถ๊ณต๋ณ ๋ง์ด ์ด๋ ค์ด๋ฐ ์ฐ์ hyejin.tistory.com p.166 ์ ๋ค๋ฆญ ํ์ ๊ณผ ๊ฐ๋ณ์ธ์ ๋ฉ์๋(varargs method)๋ฅผ ํจ๊ป ์ฐ๋ฉด ํด์ํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋ฐ๊ฒ ๋๋ค. ๊ฐ๋ณ์ธ์ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ง๋ค ๊ฐ๋ณ์ธ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ด์ ๋ฐฐ์ด์ด ํ๋ ๋ง๋ค์ด์ง๋๋ฐ, ์ด๋ ๊ทธ ๋ฐฐ์ด์ ์์๊ฐ ์ค์ฒดํ ๋ถ๊ฐ ํ์ ์ด๋ผ๋ฉด ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ..
2023.03.17 -
[์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item28. ๋ฐฐ์ด๋ณด๋ค๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ผ. ๋ฐฐ์ด๊ณผ ์ ๋ค๋ฆญ ํ์ ์๋ ์ค์ํ ๋๊ฐ์ง ์ฐจ์ด์ ์ด ์๋ค. 1๏ธโฃ ๋ฐฐ์ด์ ๊ณต๋ณ์ด๊ณ , ์ ๋ค๋ฆญ์ ๋ถ๊ณต๋ณ์ด๋ค. ๊ณต๋ณ, ๋ถ๊ณต๋ณ ๋ง์ด ์ด๋ ค์ด๋ฐ ์ฐ์ ๊ณต๋ณ์ 'ํจ๊ป ๋ณํ๋ค' ๋ผ๋ ๋ป์ด๋ค. // ๊ณต๋ณ Object[] anything = new String[10]; // String ํ์ ์ Object ํ์ ์ ๋ด์ ์ ์๋ค. (ํธํ์ด ๋๊ธฐ ๋๋ฌธ์) anything[0] = 1; // ์ปดํ์ผ ์๋ฌ๊ฐ ๋์ง ์์ง๋ง ๋ฌธ์ ๊ฐ ์๋ ์ฝ๋๋ค. (๋ฌธ์์ด ๋ฐฐ์ด์ธ๋ฐ ์ซ์๋ฅผ ๋ฃ๊ณ ์์ผ๋ฏ๋ก ๋ฒ๊ทธ๋ค..!) ๋ฐฐ์ด์์๋ Sub์ด Super์ ํ์ ํ์ ์ด๋ผ๋ฉด ๋ฐฐ์ด Sub[]์ Super[]์ ํ์ ํ์ ์ด ๋๋ค. ์์ ๋ฐ๋ผ์ Object๋ String์ ์์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ Object[]์..
2023.03.17 -
[์ดํํฐ๋ธ ์๋ฐ] Item27 ์๋ฒฝ๊ณต๋ต. ์ ๋ํ ์ด์
item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ. (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ. ์ ๋ค๋ฆญ์ ์ด์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ๋ง์ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ฒ ๋๋ค. ๋น๊ฒ์ฌ ํ๋ณํ ๊ฒฝ๊ณ , ๋น๊ฒ์ฌ ๋ฉ์๋ ํธ์ถ ๊ฒฝ๊ณ , ๋น๊ฒ์ฌ ๋งค๊ฐ๋ณ์ํ ๊ฐ๋ณ์ธ์ hyejin.tistory.com ์ด๋ ธํ ์ด์ annotation ์ด๋? : ์๋ฐ์์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ ์ ์ธ ์๋ฏธ๋ก๋ ์ฃผ์์ด๋ผ๋ ๋ป์ผ๋ก ์์ค์ฝ๋์ ์ถ๊ฐํด์ ์ฌ์ฉํ ์ ์๋ ์ผ์ข ์ ๋ฉํ ๋ฐ์ดํฐ์ ์ผ์ข ์ด๋ค. ๋ฉํ ๋ฐ์ดํฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฒ๋ฆฌํด์ผํ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ ์ปดํ์ผ ๊ณผ์ ๊ณผ ์คํ ๊ณผ์ ์์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ๋์ง๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํ ์ถ๊ฐ ..
2023.03.16 -
[์ดํํฐ๋ธ ์๋ฐ] Item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item27. ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ๋ผ. ์ ๋ค๋ฆญ์ ์ด์ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ๋ง์ ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ฒ ๋๋ค. ๋น๊ฒ์ฌ ํ๋ณํ ๊ฒฝ๊ณ , ๋น๊ฒ์ฌ ๋ฉ์๋ ํธ์ถ ๊ฒฝ๊ณ , ๋น๊ฒ์ฌ ๋งค๊ฐ๋ณ์ํ ๊ฐ๋ณ์ธ์ ํ์ ๊ฒฝ๊ณ , ๋น๊ฒ์ฌ ๋ณํ ๊ฒฝ๊ณ ๋ฑ์ด ์๋ค. ๋๋ถ๋ถ์ ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฌด์์ด ์๋ชป๋์๋์ง ์ค๋ช ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์๋ค. ์์์๋ ๋ก ํ์ ์ ์ฌ์ฉํ๋ค๊ณ ๊ฒฝ๊ณ ํ๋ ๊ฒ์ด๋ค. ํ ์ ์๋ ํ ๋ชจ๋ ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ์! ๋น๊ฒ์ฌ ๊ฒฝ๊ณ ๋, ์ปดํ์ผ ์์ ์ปดํ์ผ๋ฌ๊ฐ ์๋ฐ ์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ๋์ ์๋ชป๋ ๊ฒ๋ค์ ๋ํด ๊ฒฝ๊ณ ํ๋ ์ต์ ์ ์๋ฏธํ๋ค. ๋ชจ๋ ์ ๊ฑฐํ๋ค๋ฉด ๊ทธ ์ฝ๋๋ ํ์ ์์ ์ฑ์ด ๋ณด์ฅ๋๋ค. ์ฆ, ๋ฐํ์์ ClassCastException์ด ๋ฐ์ํ ์ผ์ด ์๋ค. ๊ทธ๋ฐ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ฑฐํ ์๋ ์์ง๋ง ํ์ ์์ ํ..
2023.03.16 -
[์ดํํฐ๋ธ ์๋ฐ] Item26 ์๋ฒฝ๊ณต๋ต. GenericRepository
item26. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ. Generic Dao ๋ง๋ค๊ธฐ Generic์ ํ์ฉํ๋ฉด ์ค๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐํ ์ ์๋ค๋ ์ฅ์ ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์ ๊ฐ์์๊ฐ์ ๊ฐ๋จํ Repository๋ฅผ ๋ง๋ค์๋ค. public interface Entity { Long getId(); } public class Account implements Entity { private Long id; private String username; public Account(Long id, String username) { this.id = id; this.username = username; } @Override public Long getId() { return this.id; } public String getUsername()..
2023.03.15 -
[์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ. https://hyejin.tistory.com/1124 [์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก(Law) ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ. 4๋ฒ์งธ ์ฑํฐ๋ก ๋ค์ด์ค๋ฉด์ ์ ๋ค๋ฆญ ํ์ ๊ณผ ๊ด๋ จ๋ item๋ค์ ๊ณต๋ถํ ์์ ์ด๋ค. ์ ๋ค๋ฆญ ํ์ ์ ์ค๋์ ๋ถํฐ ๋ค์ด์จ ๊ธฐ๋ฅ์ธ๋ฐ ๋ญ๊ฐ ์ฌ์ฉํ๊ธฐ ์ด๋ ค hyejin.tistory.com ์ ๋ฒ ๊ธ์์ ์ ๋ค๋ฆญ ํ์ ์ ๋ํ ์ฉ์ด ์ ๋ฆฌ๋ฅผ ํ๊ณ , ๊ทธ๋ฌ๋ฉด์ ๋ก ํฐ์ ์ ์ฌ์ฉํ๋ฉด ์์ข์? ์ด์ ์ ๋ํด์ ์ด์ง ์ ์๋๋ฐ ์ด๋ฒ ๊ธ์์ ์ข ๋ ์์ธํ ์์ฑํ๋ค. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๊ณ ๋งค๊ฐ๋ณ์ํ ํ์ ์ ์ฌ์ฉํ๋ผ. List numbers = new ArrayList(); numbers.add(10); ..
2023.03.15 -
[์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item26. ๋ก(Law) ํ์ ์ ์ฌ์ฉํ์ง ๋ง๋ผ. 4๋ฒ์งธ ์ฑํฐ๋ก ๋ค์ด์ค๋ฉด์ ์ ๋ค๋ฆญ ํ์ ๊ณผ ๊ด๋ จ๋ item๋ค์ ๊ณต๋ถํ ์์ ์ด๋ค. ์ ๋ค๋ฆญ ํ์ ์ ์ค๋์ ๋ถํฐ ๋ค์ด์จ ๊ธฐ๋ฅ์ธ๋ฐ ๋ญ๊ฐ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ด? ๋๋์ด ๊ฐํด์ ๋ด๊ฐ ์ง์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ ์๋๋ฐ ์ฌ์ค ์ ๋ค๋ฆญ ํ์ ์ ๋ฐ๋๋ก ์ฌ์ฉํ๊ธฐ ํธํ๋ผ๊ณ ๋ง๋ค์ด์ง ๊ธฐ๋ฅ์ด๋ค. ๋ฐ๋ผ์ ์ดํํฐ๋ธ ์๋ฐ 4์ฅ์ ๊ณต๋ถํ๋ฉด์ ์ด๋ฒ ๊ธฐํ์ ์ ๋ค๋ฆญ ํ์ ๊ณผ ์นํด์ง(?) ์์ ์ด๋ท!!! ์ ๋ค๋ฆญ ํ์ ๊ณผ ์นํด์ง๊ธฐ ์ํด์๋ ๋จผ์ ์ฉ์ด๋ฅผ ์์์ผ ํ๋๋ฐ ๋ง์นจ ๊ฐ์์์๋ ์ฉ์ด ์ ๋ฆฌ๋ฅผ ์์์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ๊ธ์์๋ ์ ๋ค๋ฆญ ๊ด๋ จ ์ฉ์ด ์ ๋ฆฌ๋ฅผ ํ๋ค. ๐ฅ ์ ๋ค๋ฆญ Generic ์ ๋ค๋ฆญ์ ์๋ฐ5๋ถํฐ ์ฌ์ฉํ ์ ์์๋๋ฐ ์ ๋ค๋ฆญ์ ์ง์ํ๊ธฐ ์ ๊น์ง๋ ์ปฌ๋ ์ ์์ ๊ฐ์ฒด๋ฅผ ๊บผ๋ผ๋๋ง๋ค ํ๋ณํ์ ํ์ด์ผ ํ๋ค...
2023.03.15 -
[์ดํํฐ๋ธ ์๋ฐ] Item25. ํฑ๋ ๋ฒจ ํด๋์ค๋ ํ ํ์ผ์ ํ๋๋ง ๋ด์ผ๋ผ.
[์ดํํฐ๋ธ ์๋ฐ] Item25. ํฑ๋ ๋ฒจ ํด๋์ค๋ ํ ํ์ผ์ ํ๋๋ง ๋ด์ผ๋ผ public class Utensil { static final String NAME = "pan"; } class Dessert { static final String NAME = "cake"; } ์์ค ํ์ผ ํ๋์ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ค๊ณ ํด์ ์ปดํ์ผ๋ฌ๊ฐ ์๋ฌ๋ฅผ ๋ด๊ฑฐ๋ ํ์ง๋ ์๋๋ค. ํ์ง๋ง ์์ค ํ์ผ ํ๋์ ํฑ๋ ๋ฒจ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์๋ฌด๋ฐ ๋์ด ์์ ๋ฟ๋ง ์๋๋ผ ์ฌ๊ฐํ ์ํ์ ๊ฐ์ํด์ผ ํ๋ค..!! ์๋ํ๋ฉด ํ ํด๋์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ง๋ก ์ ์ํ ์ ์์ผ๋ฉฐ, ๊ทธ ์ค ์ด๋ ๊ฒ์ ์ฌ์ฉํ ์ง๋ ์ด๋ ์์ค ํ์ผ์ ๋จผ์ ์ปดํ์ผํ๋๋์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์ด๋ค. -> ์ด๋ ์์ค ํ์ผ์ ๋จผ์ ๊ฑด๋ค๋๋์ ๋ฐ๋ผ ๋์์ด ๋ฌ๋ผ์ง๋..
2023.03.14 -
[์ดํํฐ๋ธ ์๋ฐ] Item24 ์๋ฒฝ๊ณต๋ต. ์ด๋ํฐ ํจํด
item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ. " p.147. ์ด๋ํฐ" [์ดํํฐ๋ธ ์๋ฐ] Item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ. (tistory.com) [์ดํํฐ๋ธ ์๋ฐ] Item24. ๋ฉค๋ฒ ํด๋์ค๋ ๋๋๋ก static์ผ๋ก ๋ง๋ค๋ผ. [์ดํํฐ๋ธ ์๋ฐ] Item23. ํ๊ทธ ๋ฌ๋ฆฐ ํด๋์ค๋ณด๋ค๋ ํด๋์ค ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๋ผ. ์ค์ฒฉ ํด๋์ค(nested class)๋ ๋ค๋ฅธ ํด๋์ค ์์ ์ ์๋ ํด๋์ค๋ฅผ ๋งํ๋ค. ์ค์ฒฉ ํด๋์ค๋ ์์ ์ ๊ฐ์ผ ๋ฐ๊นฅ ํด๋์ค์์ hyejin.tistory.com ๋น์ ์ ๋ฉค๋ฒ ํด๋์ค๋ ์ด๋ํฐ๋ฅผ ์ ์ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ค๊ณ ํ๋ค. ์ด๋ ์ด๋ํฐ ํจํด์ด๋? : ๊ธฐ์กด ์ฝ๋๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ ๊ตฌํ์ฒด๋ก ๋ฐ๊ฟ์ฃผ๋ ํจํด์ ๋งํ๋ค. ์ฆ, ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๊ธฐ ์ํด..
2023.03.14