JAVA 12

[Java] Enum ํ™œ์šฉ ๋ฐ ๊ฐœ์„ 

์ง€๊ธˆ๊นŒ์ง€ Enum๋ฅผ ๊ฝค๋‚˜ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์™”์ง€๋งŒ, ๊ทธ์ € ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์ œํ•œํ•˜๊ณ  ์ฝ”๋“œ ๋‚ด์˜ ๋งค์ง ๋„˜๋ฒ„๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ์šฉ๋„ ์ •๋„๋กœ๋งŒ ์ƒ๊ฐํ•˜๊ณ  ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ์ตœ๊ทผ ์ •์  ํŽ™ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ๊ณต๋ถ€ ์ค‘, ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ง์„ ๋ณด์žฅํ•œ๋‹ค๋Š” ์ธก๋ฉด์—์„œ Enum์— ๋Œ€ํ•œ ์–ธ๊ธ‰์ด ์žˆ์—ˆ๋‹ค. ์ด์— ์ด๋ฒˆ ๊ธฐํšŒ์— Enum์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๊ณ  ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ Enum ํŒŒํŠธ ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ„ฐ๋งํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.    โ˜‘๏ธ Enum ํ™œ์šฉ1. ์ƒํƒœ์™€ ํ–‰์œ„๋ฅผ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌ์ด๋Š” Enum ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ ๊ฐ€์žฅ ํฐ ์›์ธ์ด๋‹ค. ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์˜ ์•Œ๋ฆผ ํŒŒํŠธ๋Š” ๋ฉ”์‹œ์ง€ Content๋ฅผ Dto์— ํฌํ•จ์‹œํ‚ค๊ณ ์ž Dto์˜ ์ƒ์„ฑ์ž์—์„œ NotificationTopic์ด๋ผ๋Š” Enum ๊ฐ’์— ๋”ฐ๋ผ Content๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์—ˆ๋‹ค.ํ•˜..

JAVA 2024.07.09

[Java] ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ

์ด์ „์— ๋ฆฌํŒฉํ„ฐ๋ง์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ƒ์„ฑ์ž ๋Œ€์‹  ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” ๋‚ด๋ถ€ ๋กœ์ง์— ๋ถ€ํ•ฉํ•˜๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๋„ค์ด๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ด์œ  ํ•˜๋‚˜๋งŒ์œผ๋กœ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์—๋Š” ์ด๋ฅผ ํฌํ•จํ•œ 5๊ฐ€์ง€ ์žฅ์ ๊ณผ 2๊ฐ€์ง€ ๋‹จ์ ์ด ์กด์žฌํ•œ๋‹ค.  โ˜‘๏ธ ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ์˜ ์žฅ์  1. ๋‚ด๋ถ€ ๋กœ์ง์— ๋ถ€ํ•ฉํ•˜๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง„ ๋„ค์ด๋ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ์žฅ์ ์œผ๋กœ ์ •์  ํŒฉํ† ๋ง ๋ฉ”์„œ๋“œ๋Š” ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์ด ์กด์žฌํ•œ๋‹ค. `from` : ํ•˜๋‚˜์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ`of` : ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ`getInstance` | `instance` : ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ. ์ด์ „์— ๋ฐ˜ํ™˜ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค`newInstance` | `create` : ํ•ญ์ƒ ์ƒˆ๋กœ์šด..

JAVA 2024.06.30

[Java] ์ œ๋„ค๋ฆญ

2024๋…„ ์ƒ๋ฐ˜๊ธฐ ๋ฉด์ ‘ ์‹œ์ฆŒ์ด ๋๋‚˜๊ณ  ๋‹ค์‹œ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค๐Ÿฅฒ ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋ณธ ๋ฉด์ ‘์—์„œ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์•˜๊ณ , ์ด์— ๋‚˜๋Š” '๊ฐ•ํƒ€์ž… ์–ธ์–ด์ธ ์ž๋ฐ”์˜ ๊ฐ€์šฉ์„ฑ์„ ๋Š˜๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋กœ ๋ฒ”์šฉ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค' ๋ผ๊ณ  ๋‹ตํ–ˆ๋‹ค. ๋ฐ˜์ชฝ์งœ๋ฆฌ ๋‹ต๋ณ€์ด์—ˆ๊ณ  ์ด ๋•Œ ๋‚ด๊ฐ€ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋– ์˜ฌ๋ฆฐ ๊ฒƒ์€ ์ œ๋„ค๋ฆญ์˜ ์™€์ผ๋“œ์นด๋“œ, ์ฆ‰ `?` ํ‚ค์›Œ๋“œ์˜€๋‹ค. ๋งŒ์•ฝ ์ด์— ๋Œ€ํ•ด์„œ ๊ผฌ๋ฆฌ์งˆ๋ฌธ์ด ๋“ค์–ด์™”๋‹ค๋ฉด ๋‚˜๋Š” ์ค„์ค„์ด ํ‹€๋ฆฐ ๋‹ต๋ณ€์„ ํ–ˆ์„ ๊ฒƒ์ด๊ณ  ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด์„œ ์ž์„ธํ•˜๊ฒŒ ๋ชจ๋ฅธ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์ œ๋„ค๋ฆญ์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.   โ˜‘๏ธ ์ œ๋„ค๋ฆญ์ œ๋„ค๋ฆญ์€ ์บ์ŠคํŒ…์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ๊ฐ€์šฉ์„ฑ์„ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„..

JAVA 2024.06.11

[Java] HashMap๊ณผ ํ•ด์‹œ ์ถฉ๋Œ ํšŒํ”ผ

์ตœ๊ทผ ๋ณธ ๋ฉด์ ‘์—์„œ Hash์— ๋Œ€ํ•œ ๊ผฌ๋ฆฌ ์งˆ๋ฌธ์œผ๋กœ '์ž๋ฐ”์˜ HashMap์„ ์–ด๋–ป๊ฒŒ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?' ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›์•˜๋‹ค.์ฒด์ด๋‹๊ณผ ํŠธ๋ฆฌํ™”๋Š” ๊ธฐ์–ต์ด ๋‚ฌ์ง€๋งŒ '๋กœ๋“œํŒฉํ„ฐ'์™€ '์žฌํ•ด์‹ฑ' ์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•˜๊ณ  ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— HashMap์— ์•Œ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ฉด์„œ ๋ฆฌ๋งˆ์ธ๋“œํ•˜๊ณ ์ž ํ•œ๋‹ค.     โ˜‘๏ธ HashMap๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ์ ์ ˆํ•œ ์ดˆ๊ธฐ ์šฉ๋Ÿ‰๊ณผ ๋กœ๋“œํŒฉํ„ฐ ์„ค์ •์„ ํ†ตํ•ด ํšจ์œจ์  ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋จผ์ € ํ•ด์‹œ๋งต์€ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ํ•ด์‹œ์ฝ”๋“œ ์‚ฌ์šฉ์‹œ ํ•ด์‹œ ์ถฉ๋Œ์ด ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์˜คํ”ˆ ์–ด๋“œ๋ ˆ์‹ฑ๊ณผ ์ฒด์ด๋‹์ด ์žˆ๋‹ค. 1๏ธโƒฃ ์˜คํ”ˆ ์–ด๋“œ๋ ˆ์‹ฑ์˜คํ”ˆ ์–ด๋“œ๋ ˆ์‹ฑ์€ ํ•ด์‹œ๊ฐ’์˜ ๋ฒ„ํ‚ท์ด ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ•ด์‹œ ๋ฒ„ํ‚ท์—..

JAVA 2024.05.06

[Java] NULL ๊ฐœ์„  ๋ฆฌํŒฉํ„ฐ๋ง

์ด์ „ ๊ธ€์—์„œ ๋‹ค๋ค˜๋“ฏ์ด NULL์€ ์ˆ˜ ๋งŽ์€ ๋ฌธ์ œ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” NULL์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ๋กœ ๋ฆฌํŒฉํ„ฐ๋ง ๊ณผ์ •์—์„œ ์‚ฌ์šฉํ•œ ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ธฐ๋กํ•˜๊ณ ์ž ํ•œ๋‹ค.  1๏ธโƒฃ DB ์ •๊ทœํ™”์™€ ์ด๋กœ ์ธํ•œ ๋กœ์ง ๋‹จ์ˆœํ™” ์ ์ ˆํ•œ ๋‹จ๊ณ„๊นŒ์ง€์˜ ์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š์„ ์‹œ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  ์ด๋Š” SRP๋ฅผ ํ•ด์น˜๋Š” ์ฃผ ์›์ธ์ด ๋œ๋‹ค. ๊ธฐ์กด DB ๊ตฌ์กฐ๋Š” ์œ ์ €๊ฐ€ ํŒ€์— ํŒ€์› ์‹ ์ฒญ์„ ํ•˜๋Š” ์‹ ์ฒญ ๋‚ด์—ญ๊ณผ ํŒ€์ด ๋˜ ๋‹ค๋ฅธ ํŒ€์— ๋ฐฐํ‹€ ์‹ ์ฒญ์„ํ•˜๋Š” ์‹ ์ฒญ ๋‚ด์—ญ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์ €์žฅํ–ˆ๋‹ค. ์ฒ˜์Œ ์„ค๊ณ„ ๋‹น์‹œ ์ด ๋‘˜์€ ์‹ ์ฒญ ๋‚ด์—ญ์ด๋ผ๋Š” ๊ณตํ†ต ์†์„ฑ์œผ๋กœ ๋ฌถ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ณตํ†ต๋œ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋งŽ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค๊ณ„ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์ˆ˜ ๋งŽ์€ NULL๋กœ ์ธํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ์ •๊ทœํ™”, ์œ ..

JAVA 2024.03.27

[Java] NULL์˜ ๋ฌธ์ œ์ 

NULL์ด๋ผ๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ์ ‘ํ–ˆ์„ ๋‹น์‹œ ๊ทธ์ € Reference Type ์ดˆ๊ธฐํ™”๋ฅผ ์œ„ํ•œ ๊ฐ’, ๋ชจ๋“  Reference Type์—์„œ ํ†ต์šฉ๋˜๋Š” ๊ฐ’, ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฐ’์œผ๋กœ ์น˜๋ถ€ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ฆฐ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ๋Š” ์š”์ฆ˜ NULL์€ ๋ˆˆ์—ฃ๊ฐ€์‹œ ๊ฐ™์€ ์กด์žฌ์ด๋‹ค. NULL์€ ์ž๋ฐ” ์ฝ”๋“œ ๋‹จ์—์„œ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ์„ ํ—ค์น˜๊ณ  NPE๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋“ฑ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ DB์—์„œ ๋˜ํ•œ ์ˆ˜ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•œ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ NULL์˜ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด์–ด์„œ ๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๊ฐ€ ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•๋“ค์— ๋Œ€ํ•ด ์“ธ ์˜ˆ์ •์ด๋‹ค.  โ›” JAVA ์ฝ”๋“œ ๋‹จ์—์„œ์˜ NULL์˜ ๋ฌธ์ œ์  1๏ธโƒฃ NULL์˜ ๋…ผ๋ฆฌ์  ํ˜ผ๋ž€API์—์„œ ์‘๋‹ต ์‹œ Content ๋ถ€๋ถ„์— NULL์ด ํฌํ•จ๋˜๋Š” ๊ฒƒ์€ ์‘๋‹ต์„ ..

JAVA 2024.03.15