์๋ฐ(53)
-
[JAVA] Optional<T>
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ Optional์ด๋ผ๋ ๊ธฐ๋ฅ์ ๋ํด์ ๊ณต๋ถ๋ฅผ ํ๋ฒ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ผ ๋ฐ๋ก ์์ํ๊ฒ ์ต๋๋ค! ๐ Optional์ด๋? ๐ T Type ๊ฐ์ฒด์ ๋ํผํด๋์ค - Optional ๋ํผ ํด๋์ค์ ๋ํด ์ ๋ชจ๋ฅด์ ๋ค๋ฉด ๋ํผ ํด๋์ค ํผ๋์ ๊ด์ฌ์ ์ฃผ์ธ์! Public final class Optional{ private final T value;// T ์๋ฃํ ํ์ ์ ์ฐธ์กฐ ๋ณ์ Value ์ ์ธ .... } ์ฌ๊ธฐ์ T ํ์ ์ ๋ชจ๋ ํ์ ์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์๊ณ , Null ๋ํ ์ ์ฅํ ์ ์๋ ๊ฒ์ด์์. ๐ Optional์ ์ฌ์ฉํ๋ ์ด์ ๐ Null์ ์ง์ ๋ค๋ฃจ๋ ๊ฒ์ ์ํํ๊ธฐ ๋๋ฌธ ๐ฌ Null์ ์ ๋ชป ๋ค๋ฃจ๊ฒ ๋๋ฉด Null Point Exception์ด ๋ฐ์ํ๊ฒ ๋๋ ๊ฒ์ด์์! ๊ทธ..
2021.06.23 -
[Java] Wrapper Class
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ ์๋ฐ์ Wrapper Class์ ๋ํด ์์๋ณด๊ณ ์ถ์ ๊ฒ์ด์์! ์๋ฐ์ Optional์์ ํ์ํ ๊ฐ๋ ์ด๋ ๊ผญ ์์ง ํ์ จ์ผ๋ฉด ์ข๊ฒ ์ด์! ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค! ๐ ๋ํผํด๋์ค๋(Wrapper Class)? ํ๋ก๊ทธ๋จ์ ๋ฐ๋ผ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ฐ์ฒด๋ก ์ทจ๊ธํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ ๊ฒ์ด์์. ์๋ฅผ ๋ค์๋ฉด? Method์ ์ธ์๋ก ๊ฐ์ฒด ํ์ ๋ง์ด ์๊ตฌ๋๋ฉด, ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์๋ ๊ฒ์ด์์. ์ด ๋์๋ ๊ธฐ๋ณธ ํ์ ์ Data๋ฅผ ๋จผ์ ๊ฐ์ฒด๋ก ๋ณํํ ๋ค ์์ ์ ์ํํด์ผ๊ฒ ์ง์? ์ด๋ ๊ฒ 8๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ๊ฐ์ฒด๋ก ํฌ์ฅํด ์ฃผ๋ ํด๋์ค๋ฅผ ๋ํผ ํด๋์ค๋ผ๊ณ ํ๋ต๋๋ค. ๋ํผ ํด๋์ค๋ ๊ฐ๊ฐ์ ํ์ ์ ํด๋นํ๋ Data๋ฅผ ์ธ์๋ก ์ ๋ฌ๋ฐ์, ํด๋น ๊ฐ์ ๊ฐ์ง..
2021.06.22 -
[JAVA] ํจ์ํ ์ธํฐํ์ด์ค
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค! ์ค๋์ Lamda์ ๊ฐ๋ ์์ ์ฐ์ฅ์ ์์ธ ํจ์ํ ์ธํฐํ์ด์ค์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ๋ ๊ฒ์ด์์. Lamda๊ฐ ๋ฌด์์ธ์ง ๋ชจ๋ฅด์ ๋ค๋ฉด? ๋๋ค ํผ๋์ ๊ด์ฌ์ ์ฃผ์ธ์! ๐ ํจ์ํ ์ธํฐํ์ด์ค๋? ๐ ๋จ ํ๋์ ์ถ์ Method๋ง ์ ์ธ๋ ์ธํฐํ์ด์ค interface MyFunction { /* ํจ์ํ ์ธํฐํ์ด์ค ์์ ์ฝ๋ */ public abstract int max ( int a, int b ); } ์์ ๊ฐ์ ๋ ์๋์ ๊ฐ์ด ํด ์ฃผ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด์์! @FunctionalInterface interface MyFunction { public abstract int max ( int a, int b); } ์ปดํ์ผ๋ฌ๊ฐ Annotation์ ๋ณด๊ณ , ์ฌ๋ฐ๋ฅธ์ง๋ฅผ ํ์ธ ํด ์ฃผ๊ธฐ ๋๋ฌธ์ ์ ..
2021.06.21 -
[Java] Lamda Function
์๋ ํ์ธ์? ์ฃผ๋ํ๋์ ๋๋ค! ์ค๋์ JDK 1.8๋ถํฐ ์ง์์ด ๋๋ Lamda์ ๋ํด ๊ณต๋ถ ํด ๋ณด๋๋ก ํ ๊ฒ์ด์์! Spring Boot๋ก Web Project๋ฅผ ํ๊ณ ์๋๋ฐ, Lamda์ Optional์ด ์ฌ์ฉ๋๊ธฐ์ ๊ณต๋ถ๋ฅผ ํด ๋ณด๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ค๋ช ํ๊ธฐ์ ์ ์จ ์ฐ๋ฆฌ๋ ํจ์ํ ์ธ์ด์ ๋ํด์ ์ ํ์๊ฐ ์๋ ๊ฒ์ด์์. ์๋ฐ๋ ์ฐ๋ฆฌ๊ฐ ์ ๋ฏ OOP์ธ์ด(๊ฐ์ฒด ์งํฅ ์ธ์ด)์ธ๋ฐ, JDK 1.8 ๋ถํฐ ํจ์ํ ์ธ์ด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒ์ด์์. ์ฌ์ค ํจ์ํ ์ธ์ด ๊ธฐ๋ฅ์ ๊ฐ์ก๋ค๋ผ๊ณ ํ๊ธฐ์๋ ์ฝํ๊ณ , ๊ทธ ๊ธฐ๋ฅ์ ํฌํจํ๋ค๋ผ๊ณ ๋ณด๋ ๊ฒ์ด ๋ง์ต๋๋ค! ํ์ด์ฌ, JavaScript ์ญ์ OOP์ด์ง๋ง, ํจ์ํ ์ธ์ด ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ต๋๋ค! ๊ทธ๋ผ ์์ ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ๐ ๋๋ค์(Lambda Expression) ๐ ํจ์(M..
2021.06.21 -
Spring Frame Work ๊ธฐ์ด
๐ Model1๊ณผ Model2 ๋ฐฉ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ฑํ๊ธฐ ์ํด ์ค์ ์ ๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ ๋น์ฆ๋์ค Losic์ด๋ผ ๋ถ๋ฅด๋ฉฐ, ํ๋ฉด์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ถ๋ถ์ Presentation Losic์ด๋ผ ๋ถ๋ฅด๊ณ , ์ด ๋ ๊ฐ๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ด์์. ๋น์ฆ๋์ค ๋ก์ง์ด๋? ์ค์ DB์ ์ฐ๋ํ์ฌ Data๋ฅผ ์ป์ด์ค๊ธฐ ์ํ ์์ ์ ์ํํ๋ ์์ญ Model์ด๋ผ๊ณ ๋ช ์นญ ํ๋ฆฌ์ ํ ์ด์ ๋ก์ง์ด๋? ์ต์ข ๊ฒฐ๊ณผ๋ฌผ์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ฌ ์ฃผ๋ ์ญํ View๋ผ๊ณ ๋ช ์นญ ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ๊ฐ๋ฐ ๋ฐฉ์์ ๋ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ ๊ฒ์ด์์. Model 1 (Model 1 Architecture) Model 2 (Model 2 Architecture) ๐ Model์์์ ์ฉ์ด ๋ด์ฉ DB์ ์ฐ๋ํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ํตํด ๋ค์ด์จ Data๋ฅผ ์ ์ฅ..
2021.06.10 -
[Java] ํด๋์ค, ์์, getter, setter, ํ๋ณํ, super, ์ค๋ฒ๋ผ์ด๋ฉ์ ํ์ฉํ ์์
์๋ ํ์ธ์? ์ฃผ๋ํ๋ ์ ๋๋ค. 03์ 16์ผ ์์ ๋ฅผ ํ๋ฒ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ์์ ๋ด์ฉ์ ๊ณต์ ํด์ ์ฌ๋ฌ๋ถ๋ค๊ป์๋ ๊ณต๋ถํ์๋๋ฐ, ๋ง์ ๋์ ๋์๊ธฐ ๋ฐ๋ผ๊ฒ ์ต๋๋ค! ๊ทธ๋ผ ๋ฐ๋ก ์์ ํด ๋ณด๊ฒ ์ต๋๋ค! ๐ ๋๋ ์ค๊ณ์! Super Class์ Sub Class(2๊ฐ ์ ๋)๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํํ๋ ํ๋ก๊ทธ๋จ ๊ตฌํ ๊ฐ ํด๋์ค๋ง๋ค ๋ณ์, ๋ฉ์๋, ์์ฑ์๋ฅผ ์ฐ์ ์ ์ํด์ผ ํ๋ค. getter, setter, ์์, ํ๋ณํ, super ํค์๋, ์ค๋ฒ๋ผ์ด๋ฉ์ ์ฌ์ฉํ ๊ฒ! ๐ ํด๋์ค ๊ตฌํํ ๐์ฃผ์ : ์ปคํผ์ ํด๋์ค ์ด๋ฆ ์ค ๋ช Cafe.java Main Method People.java private String name; // ์ด๋ฆ private String phoneNum; // ํธ๋ํฐ ๋ฒํธ private String a..
2021.03.16