๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋/Java ์๋ฐ (51)
Bibi's DevLog ๐ค๐
Optional Optional ์ต์ ๋ : ''๊ฐ์ฒด''๊ฐ null์ธ์ง ์๋์ง ํ๋ณํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. Optional byId = userRepository.findById(id); ↓ User user = userRepository.findById(id).orElseGet(User::new); ๋๋ค๋ฅผ ๋ฉ์๋์ฐธ์กฐ๋ก ๋ฐ๊พธ๊ธฐ () -> new User() == User::new ๋๋ค์์ ์ถ์ฝํ ๋ฉ์๋ ์ฐธ์กฐ์?์ด๋ค. orElseGet() : null์ผ ๋ ()์์ ์คํํ๋ค. ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค์์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค orElseThrow() : null์ผ ๋ ํด๋น ์์ธ๋ฅผ ๋์ง๋ค. (๊ฒฐ๊ตญ Optional ์ฌ์ฉํ ๋๋ ํญ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋๋ค์ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ๋..
๋ฆฌ๋ทฐ์ด Dion๊ป์ ์๋ฐ ์๊ฐ ํ์ ๋ฐ ๊ฐ์ฒด์์ฑ, import์ ๋ํ ์ข์ ํผ๋๋ฐฑ์ ์ฃผ์ ์ ๊ธฐ๋ก์ผ๋ก ๋จ๊ธด๋ค! ๊ฐ์ฌํฉ๋๋ค๐โ๏ธ ๋ฉ์๋ ๋ค์ด๋ฐ ๋ฉ์๋์๋ ๋ฉ์๋ ๋ด๋ถ ๋์์ ๋๋ฌ๋ด๊ธฐ ๋ณด๋ค๋ ๋ฉ์๋๊ฐ ์ํํ ํ๋์ ์ ์ด์ฃผ์ธ์. ๊ฐ๋จํ๊ฒ home์ผ๋ก ๊ฐ๊ฒ์ด๋ home()์ ๋์ฌ๋ ์ถฉ๋ถํฉ๋๋ค. ์ ๊ทธ๋ ๊ตฐ์! ๋ฉ์๋๋ช ์ ๋์ฌ๋ก ํ๋ ๊ฒ ์ข๋ค๋ ๋ง์ ๋ค์ด์ ์ด๋ ๊ฒ ํ๋๋ฐ, ๋์ฌ์ ์ง์ฐฉํ๊ธฐ๋ณด๋ค๋ ๋ฉ์๋์ ํ๋์ ๋ํ๋ด๋ ๊ฒ์ ๋ ์ค์ ์ ๋๋ฉด ๋๋์?๐ฎ ๋ค ๋์ฌ ๋ณด๋ค๋ ๋ฉ์๋๊ฐ ์ด๋ค ์ผ์ ํด์ค ๊ฒ์ธ๊ฐ๊ฐ ๋ ์ค์ํ๋ต๋๋ค! +์ค์ฌ์ฐ๊ธฐ ์ง์ํ๊ธฐ (inputPw) ๋ณ์ ๋ค์ด๋ฐ ์์๋ณ์๋ผ๋ ๋ณ์๋ช ์ ๊ด์ฌ๋ ๋ถ์ด์ง ์๋ ๊ฒ ์ผ๋ฐ์ ์ด๋ค. aUser(โ) ์๋ฐ ๋ ์ง/์๊ฐ ํด๋์ค LocalDateTime ๋ฐ import์ ๋ํด publ..
ํฉํ ๋ฆฌ ๋ฉ์๋ ํฉํ ๋ฆฌ ๋ฉ์๋ ํจํด Factory Method Pattern ์ด๋? ์๋ฐ ๋์์ธํจํด์ ํ๋๋ก, ๊ฐ์ฒด ์์ฑ์ ๋์ ์ํํด ์ฃผ๋ ๊ณต์ฅ์ ๋น์ ํ ์ ์๋ค. ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๋ ๋์ , ๋ฉ์๋๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ์์ฑ ํ ๋ฐํํ๋ ๋ฐฉ์. (๊ฐ์ ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋์ ์์ฑํด ์ฃผ๋ ๋ฉ์๋๋ฅผ ํฉํ ๋ฆฌ๋ฉ์๋๋ผ๊ณ ํ๋ค) ์ฅ์ ์์ฑํ ํด๋์ค๋ฅผ ๋ฏธ๋ฆฌ ์์ง ๋ชปํด๋ ํฉํ ๋ฆฌ ํด๋์ค๊ฐ ๊ฐ์ฒด ์์ฑ์ ๋ด๋นํด ์ค๋ค. ๊ฐ์ฒด์ ์๋ฃํ์ด ํ์ํด๋์ค์ ์ํด ๊ฒฐ์ ๋๋ค - ํ์ฅ์ด ์ฉ์ดํ๋ค ํ์ฅ์ฑ ์๋ ์ ์ฒด ํ๋ก์ ํธ๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค. ๋์ผํ ํํ๋ก ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค. ๋จ์ ๊ฐ์ฒด๊ฐ ๋์ด๋ ๋ ๋ง๋ค ํ์ํด๋์ค๋ฅผ ์ฌ์ ์ํด์ผ ํ๋ฏ๋ก ๋ถํ์ํ ๋ง์ ํด๋์ค๊ฐ ์์ฑ๋ ์ ์๋ค. ์์ Shape.java public interface Shape { ..
static import๊ณผ static ๋ฉ์๋ static ๋ฉ์๋๋ ์๋ฐ์์ ๋ฉ์๋๋ฅผ static์ผ๋ก ์ ์ธํ๋ฉด, ํด๋์ค ์ธ์คํด์ค๋ฅผ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ๋ก ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. int i = Math.abs(-3) ์ฒ๋ผ ์ฌ์ฉํ๋ค. (java.lang.Mathํด๋์ค์ abs()๋ฉ์๋) static import๋ static import๋ ์ด๋ฐ static๋ฉ์๋๋ฅผ ๋์ฑ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ผ๋ฐ import์ ๋ค๋ฅด๊ฒ ๋ฉ์๋/๋ณ์๋ฅผ ํจํค์ง, ํด๋์ค๋ช ์์ด ์ ๊ทผํ ์ ์๊ฒ ํด ์ค๋ค. import static java.lang.Math.abs;์ ๊ฐ์ด static import ํ ๋ค์๋ int i = abs(-3)๊ณผ ๊ฐ์ด ํด๋น static๋ฉ์๋๋ฅผ ํด๋์ค๋ช ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค. โป ๋จ..
๋ฆฌ๋ทฐ์ด ๋ถ๊ป์ ๋ง์ง๋ง ์ฝ๋ฉํธ๋ฅผ ๋ฌ์ ์ฃผ์ ๋ด์ฉ์ ๋ฐฐ์ธ ์ ์ด ๋ง์์, ๊ทธ ๋ถ๋ถ์ ์ ๋ฆฌํ๋ค. ์๋ฐ ์์์ ์์ ์ปจ๋ฒค์ Q. ์๋ฐ ์์๋ช ์ ๋ชจ๋ ๋๋ฌธ์์ Snake Case๋ฅผ ์ด๋ค, ์ง์ญ๋ณ์๋ ์๋ฌธ์์ Camel Case๋ฅผ ์ด๋ค ์ด ์ ๋๋ง ์๊ณ ์๋๋ฐ, ์์ ๊ฐ์ด ์ง์ญ๋ณ์์ธ ์์์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ์ง์ด์ผ ํ๋์?๐ค ์ฐ์ ์ ์์๋๊น ๋๋ฌธ์๋ก ์ฐ๊ธด ํ๋๋ฐ, ์ด๋ฐ ๊ฒฝ์ฐ ์์์ด๊ธฐ ์ ์ ์ง์ญ๋ณ์์ด๋ฏ๋ก start end์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ ๊ฑด๊ฐ์? ์ฝ๋ฉํธ ๊ฐ์ฌํฉ๋๋ค!๐โ๏ธ A. The names of variables declared class constants and of ANSI constants should be all uppercase with words separated by underscores ("_"..
๊ฐํ๋ฌธ์ - System.getProperty("line.separator"), System.lineSeparator() ๊ฐํ๋ฌธ์(์ค๋ฐ๊ฟ๋ฌธ์, new line)๋? : ์ปดํจํฐ์์ ์ค๋ฐ๊ฟ์ ๋ํ๋ค๋ ์ ์ด๋ฌธ์. ์ค๋ฐ๊ฟ๋ฌธ์, ์์ค๋ฌธ์, ๋ผ์ธ์๋ฉ, ๋ณต๊ท๊ฐํ.. ๋ฑ์ผ๋ก๋ ๋ถ๋ฆฐ๋ค. (newLine, line ending, end-of-line,EOL, line break ..) ๊ฐํ๋ฌธ์์๋ ๋ ์ข ๋ฅ๊ฐ ์๋ค. LF : new Line Feed, ๋ผ์ธํผ๋, ๋ด๋ผ์ธ. ์ปค์๋ฅผ ํ ์นธ ์๋๋ก ์ด๋ํด ์๋ก์ด ๋ผ์ธ์ ์ถ๊ฐ \n ์์คํค์ฝ๋ : 10 CR : Carrige Return, ์บ๋ฆฌ์ง๋ฆฌํด, ๋ฆฌํด. ์ปค์๋ฅผ ๋งจ ์ผ์ชฝ์ผ๋ก ์ด๋(์์ ์์น๋ก ๋ณต๊ท) \r ์์คํค์ฝ๋ : 13 ์ํฐํค์ ๊ฐ๋ค. ์ด์์ฒด์ ๋ณ ์ค๋ฐ๊ฟ๋ฌธ์ ์ค๋ฐ๊ฟ ๋ฌธ์(๊ฐํ๋ฌธ..
์คํธ๋ฆผ Stream ์คํธ๋ฆผ์ด๋? : ๋ฐฐ์ด, ์ปฌ๋ ์ , ํ์ผ ๋ฑ ์ธ์คํด์ค์ ์ ์ฅ ์์๋ฅผ ์ฝ๊ฒ ์ฐธ์กฐํ๊ฒ ํด ์ฃผ๋ ๋ฐ๋ณต์. (์ถ์ฒ) ๋ฐ์ดํฐ ์์ค๋ฅผ ์ถ์ํํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค์ ์ ์ํด ๋์. '๋ฐ์ดํฐ ์์ค์ ์ถ์ํ'์ ์๋ฏธ? : ๋ฐ์ดํฐ ์์ค(๋ฐฐ์ด/์ปฌ๋ ์ /ํ์ผ ..)๊ฐ ๋ฌด์์ด๋ ๊ฐ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ค๋ฃฐ ์ ์๋ค. : ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์์ง๋ค. // String[] ๊ณผ List์ด๋ผ๋ ๋ ๋ฐ์ดํฐ์์ค String[] strArr = {"aaa", "bbb", "ccc"}; List strList = Arrays.asList(strArr); // Stream ์์ฑ Stream strStream1 = Arrays.stream(strArr); Stream strStream2 = ..
๋๋ค ์ฐธ๊ณ : ''์๋ฐ์ ์ ์'' ์ ๋ณด๊ณ ๊ณต๋ถํ์ต๋๋ค. ๋๋ค์ Lambda expression JDK1.8๋ถํฐ ๋์ ๋ ๊ฐ๋ ์ด๋ค. ๋๋ค์์ ๋์ ์ผ๋ก ์๋ฐ๋ ๊ฐ์ฒด์งํฅ์ธ์ด์ธ ๋์์ ํจ์ํ ์ธ์ด๊ฐ ๋์๋ค. ๋๋ค์์ด๋? : ๋ฉ์๋๋ฅผ ํ๋์ ์(expression)์ผ๋ก ํํํ ๊ฒ. ๋๋ค์์ผ๋ก ํจ์๋ฅผ ๊ฐ๋ตํ ์์ผ๋ก ํํํ ์ ์๋ค. (๋๋ค์์ ์ต๋ช ํด๋์ค์ ๊ฐ์ฒด์ ๋๋ฑํ๋ค) ๋ฉ์๋๋ฅผ ๋๋ค์์ผ๋ก ํํํ๋ฉด ๋ฉ์๋ ์ด๋ฆ๊ณผ ๋ฆฌํด๊ฐ์ด ์์ด์ง๋ค. ๋๋ฌธ์ ๋๋ค์์ '์ต๋ช ํจ์ anonymous function' ๋ผ๊ณ ๋ ํ๋ค. (i) -> (int)(Math.random()*5)+1; int method() { return (int)(Math.random()*5) + 1; } ์์ ๋๋ค์..