java
-
[Java] ๋์์ธ ํจํด(Strategy ํจํด)Android/Java 2021. 5. 11. 23:31
์ด ๊ธ์ "์ธํ๋ฐ Java ๋์์ธ ํจํด" ๊ฐ์๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ธ์ ์์ฑํ์์ต๋๋ค. Strategy ํจํด ํด๋์ค ์ญํ ์ ๋๋ ทํ ํ์ฌ ๋ชจ๋ํ๋ ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํจํด์ผ๋ก ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ๋ฅ๋ค์ ๋ํด ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ก ๊ตฌํํ์ฌ ํํํ๋ ํจํด์ ๋๋ค. ๊ฐ ๊ธฐ๋ฅ๋ค์ ๋ํด์ If, else if, else ์ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ผ๋ก ํ๋์ฝ๋ฉํ์ฌ ๋ค๋ฅด๊ฒ ์์ฑํ๋ฉด ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์์๋ ๊ฐ์์ง ๋ชฐ๋ผ๋ ๊ฐ์ฒด์งํฅ ์์น์ด ์ด๊ธ๋๊ฒ ๋ฉ๋๋ค. ์ํ๋ ๋์์ด ์์ ๋ ํด๋น ๊ธฐ๋ฅ์ ๊ตฌํํ ํด๋์ค๋ก ๋ฐ๊พธ๊ธฐ ๋๋ฌธ์ ์ถํ ์ ์ง๋ณด์์ ์์ ์ ์ฉ์ดํฉ๋๋ค. Strategy ํจํด ์ฌ์ฉ public class DeviceOS { public String type; public DeviceOS(String type) { thi..
-
[Java] ๋๋ค์์ด๋?Android/Java 2021. 3. 21. 23:06
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค. ๋๋ค์์ด๋? ๋๋ค์์ด๋ ํจ์๋ช ์ ์ ์ธํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ์๋ณ์ ์์ด ์คํ๊ฐ๋ฅํ ํจ์์ ๋๋ค. ์ ์ฐจํ ํ๋ก๊ทธ๋๋ฐ, ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ๋ ์ฌ๋ญ ๋ค๋ฅด๊ฒ ํจ์์ ๊ตฌํ๊ณผ ํธ์ถ๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐฉ์์ธ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ฐ 8๋ถํฐ ๋์ ์ด ๋์์ผ๋ฉฐ, ๋๋ค์์ ์ต๋ช ํจ์๋ฅผ ๋ง๋๋ ๊ฒ์ธ๋ฐ ์ต๋ช ํจ์๋ ์ผ๊ธ๊ฐ์ฒด ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋๋ค์ ์ฌ์ฉ๋ฒ์ (๋งค๊ฐ๋ณ์, ....) -> { ์คํ๋ฌธ ... } ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ผ๊ธ๊ฐ์ฒด๋? ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ 1๊ธ๊ฐ์ฒด๋ผ๋ ๋ง์ ์์ฃผ ์ฌ์ฉํ๋๋ฐ, 1๊ธ๊ฐ์ฒด๊ฐ ๋ฌด์์ธ์ง ์ ๋ฆฌํ์์ต๋๋ค. Java์ Kotlin์ ๋น๊ต๋ฅผ ํตํด Kotlin ํจ์๋ 1๊ธ ๊ฐ์ฒด์ง๋ง, Java๋ 1๊ธ๊ฐ์ฒด๊ฐ ..
-
[Java] Java Generic(์ ๋ค๋ฆญ)Android/Java 2021. 3. 1. 15:43
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ์์ต๋๋ค. Generic์ด๋? Integerํ ๋ฐฐ์ด, Stringํ ๋ฐฐ์ด ๋ฑ๋ฑ ๋ฐฐ์ด์ ํฌํจ๋๋ ์์์ ํ์ ๋ง๋ค ์ถ๊ฐ, ์ญ์ , ์ ๋ ฌ๊ณผ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉํ๋ ๊ฒ์ ๋ถ๋ช ๋นํจ์จ์ ์ผ ๊ฒ์ ๋๋ค. ์๋ฐ์ Generic์ ๋ฐ์ดํฐ์ ํ์ ์ ์ผ๋ฐํํ๋ค๋ ์๋ฏธ๋ก ํด๋์ค๋ ๋ฉ์๋ ์ ์ ์ ์ผ๋ฐํํ์ฌ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ์ปดํ์ผ ์์ ๋ฏธ๋ฆฌ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. JDK1.5 ๋ถํฐ Generic์ ์ฌ์ฉ๊ฐ๋ฅํ๋ฉฐ, ์ปดํ์ผ ์ ํ์ ์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์, ํด๋์ค๋ ๋ฉ์๋ ๋ด๋ถ์ ์ฌ์ฉ๋ ๋ฐ์ดํฐ์ ํ์ ์์ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค. JDK1.5 ์ด์ ์๋ Object ํ์ ์ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ฐ์ฒด์ ํ์ ์ผ๋ก ์บ์คํ ํ์ฌ ์ฌ์ฉํด์ผ๋ง ํ๊ณ , ์๋ชป๋ ์บ์คํ ์ผ๋ก ์ธํด ๋ฐํ์ ์ค๋ฅ ๋ฐ์ํ ๊ฐ๋ฅ..
-
[Java] Java IO, NIOAndroid/Java 2021. 2. 22. 14:47
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"์์ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์ฌ ์์ฑํ์์ต๋๋ค. Java IO ๋ชจ๋ ํ๋ก๊ทธ๋จ์์๋ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ๋ ๊ณผ์ ์ ํ์ฐ์ ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ ํค๋ณด๋๋ฅผ ํตํด ์ง์ ์ ๋ ฅ์ ํ์ฌ ํ๋ก๊ทธ๋จ์๊ฒ ์ ์ก์ ํ๊ฑฐ๋, ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ์์๊ฒ ๋ชจ๋ํฐ๋ ํ์ผ ๋ฑ์ผ๋ก ๋ณด๋ด์ด ์ถ๋ ฅํ ์๋ ์์ต๋๋ค. ์๋ฐ์์๋ ๋ฐ์ดํฐ๋ฅผ ์คํธ๋ฆผ(stream) ํํ๋ก ์ ์ถ๋ ฅ์ ํ๊ฒ ๋ฉ๋๋ค. ์คํธ๋ฆผ์ด๋ ์ถ๋ฐ์ ์์ ๋์ฐฉ์ ๊น์ง ์ฐ์์ ์ผ๋ก ํ๋ฌ๊ฐ๋ค๋ ๊ฐ๋ ์ ๋ปํฉ๋๋ค. ํ๋์ ์คํธ๋ฆผ์ ๊ฐ์ง๊ณ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๋์์ ํ ์๋ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ์ด ์ก์ ์ธก์ธ์ง, ์์ ์ธก์ธ์ง์ ๋ฐ๋ผ ์คํธ๋ฆผ์ ์ข ๋ฅ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๋ ๋๋ InputStream์ ์ฌ์ฉํ๊ณ , ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฅผ ์ก์ ํ ๋๋ OutputStream์ ์ฌ์ฉ..
-
[Java] Annotation, Meta data๋?Android/Java 2021. 2. 19. 18:27
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋"๋ฅผ ํตํด ๊ณต๋ถํ ๋ด์ฉ์ ์์ฑํ์์ต๋๋ค. Annotation์ด๋? Anntation์ JDK 1.5๋ถํฐ ๋์ ๋ ๊ฒ์ผ๋ก ์๋ฐ ์์ค ์ฝ๋์ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ์ ์ผ์ข ์ ๋๋ค. ๋๋ถ๋ถ์ด ๋ง์ด ๋ดค์ ๋งํ @Override, @Deprecated ๊ฐ Annotation ์๋ก Annotation์ ๊ตฌํ๋ ์ ๋ณด์ ๋ฐ๋ผ ์ฐ๊ฒฐ๋๋ ๋ฐฉํฅ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ์ฆ, ์ ์ฒด์ ์ธ ์์ค์ฝ๋์ ๋ก์ง์ ๋ฐ๊พธ์ง ์์ง๋ง Annotation์ ํ๊ฒ์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ์ด๋ ์์ค์ฝ๋์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. Annotation์ ๊ธฐ๋ฅ์ ์ ํ์ฉํ๋ค๋ฉด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ณ๋์ ์์คํ ์ค์ ์ Annotation์๊ฒ ์์ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ค์ ๋ก์ง ๊ตฌํ์๋ง ์ง์คํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ Annotation์ ํตํด AOP(..
-
[Android] Unit Test, JUnit4Android 2021. 2. 16. 23:52
Unit Test Unit Test๋ ๋ง ๊ทธ๋๋ ๋จ์ ํ ์คํธ๋ก, Test Driven Development๋ก ๊ฐ๋ฐํ๊ฒ ๋๋ฉด ๊ธฐ๋ฅ ๋จ์๋ณ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ๊ตฌ์ฑํด์ผ ํฉ๋๋ค. ๋ํ์ ์ธ Unit Test Tool๋ก JUnit์ด ์์ผ๋ฉฐ, ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ฉ ๋จ์ํ ์คํธ ํ๋ ์์ํฌ์ ๋๋ค. ์ฃผ๋ก ์๋๋ก์ด๋ ํ๋ ์์ํฌ์์ dependency๊ฐ ์๋ ํ ์คํธ ์ฝ๋์ ์ฌ์ฉ๋๋ฉฐ, ๋ก์ปฌ JVM์์ ์คํ๋ฉ๋๋ค. ๋ง์ฝ, ์๋๋ก์ด๋ ํ๋ ์์ํฌ์์ ๋ณต์กํ ์ํธ์์ฉ์ ํ๋ dependecny๊ฐ ์๋ค๋ฉฐ Robolectric ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ณ , ํ ์คํธ์ ์ต์ํ์ ์๋๋ก์ด๋ ํ๋ก์ ํธ์ dependency๋ผ๋ฉด Mockito์ ๊ฐ์ ๋ชจ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Gradle ์ค์ Unit Test์ ์์ค ํ์ผ์ module-nam..
-
[Java] Enum์ด๋?Android/Java 2021. 2. 14. 18:43
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋" ๋ด์ฉ์ ๊ณต๋ถํ์ฌ ์์ฑํ ๊ธ์ ๋๋ค. ์์์ ํํ ๊ธฐ์กด์ ์์๋ฅผ ํํํ ๋๋ ํด๋น ํด๋์ค ๋ด๋ถ์ final static String, final static int์ ๊ฐ์ด ์ ์๋ฅผ ํ์์ต๋๋ค. ์ด์ฒ๋ผ ์ ์ํ๋ ๋ฐฉ์์ ์์๊ฐ ๋ง์์ง ๊ฒฝ์ฐ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ , ์ด๋ค ๊ฒ์ ๊ดํ ์์์ธ์ง ํ์ ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ ์๋ก์ด ์์ ํด๋์ค ๋๋ ์์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ ์ ์๋ฅผ ํ์ง๋ง ์ด ์ญ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ถํธํจ์ด ์กด์ฌํ์์ต๋๋ค. interface UNIVERSITY{ int SEOUL = 1; int YONSEI = 2; int KOREA = 3; } interface MAJOR{ int KOREAN = 1; int MATH = 2; int ENGLISH = 3; int SCIENCE =..
-
[Java] ์๋ฐ ์ฐ๋ ๋ ๊ต์ฐฉ์ํ(deadlock)Android/Java 2021. 2. 7. 17:01
์ด ๊ธ์ "์๋ฐ ์จ๋ผ์ธ ์คํฐ๋" ๋ด์ฉ์ ๊ฐ์ง๊ณ ๊ณต๋ถํ์ฌ ์์ฑํ ๊ธ์ ๋๋ค. Thread DeadLock ์ด๋? ๋ฉํฐ ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ๋๊ธฐํ๋ฅผ ํตํด ๋ฝ์ ํ๋ํ์ฌ ๋์ผํ ์์์ ์ฌ๋ฌ ๊ณณ์์ ํจ๋ถ๋ก ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํ์์ต๋๋ค. ํ์ง๋ง ๋ ๊ฐ์ ์ฐ๋ ๋์์ ์๋ก๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฝ์ด ํด์ ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๊ฐ ์๊ธธ ์ ์์ผ๋ฉฐ ์ด๋ฌํ ์ํ๋ฅผ ๊ต์ฐฉ์ํ(deadlock) ์ด๋ผ๊ณ ํฉ๋๋ค. ๊ต์ฐฉ์ํ๊ฐ ๋๋ฉด ์ด๋ค ์์ ๋ ์คํ๋์ง ๋ชปํ๊ณ ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ง ๋ฐ๋ผ๋ ๋ฌดํ์ ๋๊ธฐ ์ํ์ ๋๋ค. DeakLock ๋ฐ์ ์กฐ๊ฑด ์ํธ ๋ฐฐ์ (Mutual Exclusion) : ํ ์์์ ๋ํด ์ฌ๋ฌ ์ฐ๋ ๋ ๋์ ์ ๊ทผ ๋ถ๊ฐ ์ ์ ์ ๋๊ธฐ (Hold and Wait) : ์์์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์..