Java

Java Switch NPE ํ”ผํ•˜๊ธฐ String str = null; switch (str) { case "one": System.out.println("1"); break; case "two": System.out.println("2"); break; default: System.out.println("default"); break; } ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ switch(์กฐ๊ฑด) -> (์กฐ๊ฑด)์— ๋“ค์–ด๊ฐ€๋Š” ๋ณ€์ˆ˜๊ฐ€ null์ผ ๊ฒฝ์šฐ NPE๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๋‹น์—ฐํ•œ ๊ฒฐ๊ณผ์ผ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ƒ๊ฐ๋ณด๋‹ค ๋†“์น  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋ผ ๊ธ€๋กœ ๋‚จ๊ฒจ ๋†“์œผ๋ ค๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ, NPE๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ• ๋ช‡๊ฐ€์ง€๋ฅผ ์†Œ๊ฐœํ•œ๋‹ค. ์‚ฌ์‹ค ๋‹ค ์ฉ ๋ง˜์— ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋ผ, Pattern Matching ๊ธฐ๋Šฅ์ด ๋„์ž…๋œ switch๋ฌธ์„ ์‚ฌ์šฉ(java 17 ์ดํ›„..
@UtilityClass UtilityClass๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”์—์„œ ์œ ํ‹ธ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์žˆ์—ˆ๋˜ ๊ธฐ์–ต์ด ๋‚˜์„œ ๊ตฌ๊ธ€๋ง ํ•˜๋‹ค๊ฐ€ ์ฐพ์€ ์–ด๋…ธํ…Œ์ด์…˜ boilerplate๋กœ ๊ฐ„์ฃผํ•  ๋งŒํผ ์ผ๋ฐ˜์ ์ธ์ง€์— ๋Œ€ํ•œ ๋…ผ์Ÿ์ด ์žˆ๋Š” ํ˜•์‹์ด๋ผ ์‹คํ—˜ ๊ธฐ๋Šฅ์œผ๋กœ ๋„์ž…๋˜์—ˆ๋‹ค๊ณ  ํ•จ (lombok v1.16.2) boilerplate : ์ตœ์†Œํ•œ์˜ ๋ณ€๊ฒฝ์œผ๋กœ ์—ฌ๋Ÿฌ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ฐ˜๋ณต์ ์œผ๋กœ ๋น„์Šทํ•œ ํ˜•ํƒœ๋ฅผ ๋„๋Š” ์ฝ”๋“œ๋ฅผ ๋งํ•œ๋‹ค. ๊ธฐ๋Šฅ private ์ƒ์„ฑ์ž๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์ธ์Šคํ„ด์Šคํ™” ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ง‰์Œ final class ์œผ๋กœ ์ง€์ •๋˜์–ด ์ƒ์† ๋ฐ›์„ ์ˆ˜ ์—†๊ฒŒ ๋จ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๋ฉค๋ฒ„์™€ ๋ฉ”์„œ๋“œ๋Š” static ์ฒ˜๋ฆฌ ๋จ. (inner class static ์ฒ˜๋ฆฌ ๋จ) // With Lombok import lombok.experimental..
๋‹น์›” 1์ผ ๋ฐ ๋ง์ผ ๊ตฌํ•˜๊ธฐ 1์ผ : firstDayOfMonth() ๋ง์ผ : lastDayOfMonth() 00:00:00 ๋ฐ 23:59:59๋Š” LocalTime.MIN ๋ฐ LocalTime.MAX ๋ฅผ ์ด์šฉํ•œ๋‹ค import static java.time.temporal.TemporalAdjusters.* LocalDateTime today = LocalDateTime.now(); LocalDateTime starttime = today.with(firstDayOfMonth()).with(LocalTime.MIN); // ๋‹น์›” 1์ผ 00:00:00 LocalDateTime endtime = today.with(lastDayOfMonth()).with(LocalTime.MAX); // ๋‹น์›” ๋งˆ์ง€๋ง‰๋‚  23:5..
MyBatis parameterType, resultType์— Static Inner Class ์‚ฌ์šฉ OuterClass$InnerClass๋กœ ์ ‘๊ทผ $๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, Java์˜ ํŠน์„ฑ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Java์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ์—๋Š” Class์•ˆ์—์„œ InnerClass์— ์ ‘๊ทผํ•  ๋•Œ, ๋ชจ๋‘ ๊ตฌ๋‘์ ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ํŠน์ • ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด์™€์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๋กœ๋”์—์„œ๋Š” Package namespace๋Š” ๊ตฌ๋‘์ (.)์œผ๋กœ ๊ตฌ๋ถ„ํ•˜๊ณ , ํด๋ž˜์Šค์™€ InnerClass์˜ namespace๋Š” $๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ํ—ˆ๋Œ€์˜(Daeyoung Heo) 2016.4.22 00:42 ๐Ÿ‘ Reference ๋”๋ณด๊ธฐ https://hashcode.co.kr/questions/1753/mybatis%EC%97%90%EC%84%9C-inner-cla..
ํšŒ์ „์ดˆ๋ฐฅ (๋ฌธ์ œ _ 15961) ํšŒ์ „ ์ดˆ๋ฐฅ ์Œ์‹์ ์—๋Š” ํšŒ์ „ํ•˜๋Š” ๋ฒจํŠธ ์œ„์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์ดˆ๋ฐฅ์ด ์ ‘์‹œ์— ๋‹ด๊ฒจ ๋†“์—ฌ ์žˆ๊ณ , ์†๋‹˜์€ ์ด ์ค‘์—์„œ ์ž๊ธฐ๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ดˆ๋ฐฅ์„ ๊ณจ๋ผ์„œ ๋จน๋Š”๋‹ค. ์ดˆ๋ฐฅ์˜ ์ข…๋ฅ˜๋ฅผ ๋ฒˆํ˜ธ๋กœ ํ‘œํ˜„ํ•  ๋•Œ, ๋‹ค์Œ ๊ทธ๋ฆผ์€ ํšŒ์ „ ์ดˆ๋ฐฅ ์Œ์‹์ ์˜ ๋ฒจํŠธ ์ƒํƒœ์˜ ์˜ˆ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค. ๋ฒจํŠธ ์œ„์—๋Š” ๊ฐ™์€ ์ข…๋ฅ˜์˜ ์ดˆ๋ฐฅ์ด ๋‘˜ ์ด์ƒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ ๋ฌธ์„ ์—ฐ ํšŒ์ „ ์ดˆ๋ฐฅ ์Œ์‹์ ์ด ๋ถˆ๊ฒฝ๊ธฐ๋กœ ์˜์—…์ด ์–ด๋ ค์›Œ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ํ–‰์‚ฌ๋ฅผ ํ†ตํ•ด์„œ ๋งค์ƒ์„ ์˜ฌ๋ฆฌ๊ณ ์ž ํ•œ๋‹ค. ์›๋ž˜ ํšŒ์ „ ์ดˆ๋ฐฅ์€ ์†๋‹˜์ด ๋งˆ์Œ๋Œ€๋กœ ์ดˆ๋ฐฅ์„ ๊ณ ๋ฅด๊ณ , ๋จน์€ ์ดˆ๋ฐฅ๋งŒํผ ์‹๋Œ€๋ฅผ ๊ณ„์‚ฐํ•˜์ง€๋งŒ, ๋ฒจํŠธ์˜ ์ž„์˜์˜ ํ•œ ์œ„์น˜๋ถ€ํ„ฐ k๊ฐœ์˜ ์ ‘์‹œ๋ฅผ ์—ฐ์†ํ•ด์„œ ๋จน์„ ๊ฒฝ์šฐ ํ• ์ธ๋œ ์ •์•ก ๊ฐ€๊ฒฉ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค. ๊ฐ ๊ณ ๊ฐ์—๊ฒŒ ์ดˆ๋ฐฅ์˜ ์ข…๋ฅ˜ ํ•˜๋‚˜๊ฐ€ ์“ฐ์ธ ์ฟ ํฐ์„ ๋ฐœํ–‰ํ•˜๊ณ , 1๋ฒˆ ํ–‰์‚ฌ์— ์ฐธ๊ฐ€ํ•  ๊ฒฝ..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
'Java' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก