[Kotlin] Null

[์›๋ณธ ๋งํฌ]

image

์ž๋ฐ”์—์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด ํ”ํžˆ ๋งŒ๋‚˜๋Š”๊ฒŒ NullPointerException์ด๋‹ค.

๊ทผ๋ฐ ์ด๊ฒƒ๋„ ํƒ€์ž…์„ ์ž˜ ์ด์šฉํ•˜๋ฉด ์•„์ฃผ ์•ˆ์ „ํ•˜๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž๋ฐ”์—์„œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค ํƒ€์ž…์— ์ „๋ถ€ null์„ ๋Œ€์ž…ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ํƒ€์ž… ๋’ค์— ?๋ฅผ ๋ถ™์ธ null๊ฐ€๋Šฅ(nullable) ํƒ€์ž…์—๋งŒ null์„ ๋„ฃ๋„๋ก ํ•œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๋„ ์˜ค๋ฅ˜๋ฅผ ์ปดํŒŒ์ผํƒ€์ž„์— ์ƒ‰์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. image

image nullable์ด ์•„๋‹Œ๋ฐ null์„ ๋„ฃ์—ˆ์œผ๋‹ˆ ์—๋Ÿฌ


image

image ์ž˜๋จ


?: ์—ฐ์‚ฐ์ž
๊ทธ๋ฆฌ๊ณ  null ์ฒ˜๋ฆฌ์— ํŽธ๋ฆฌํ•œ ์—˜๋น„์Šค ์—ฐ์‚ฐ์ž๋ผ๋Š” ๊ฒƒ๋„ ์ œ๊ณตํ•œ๋‹ค.
A ?: B
์œ„์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋Š”๋ฐ, A๊ฐ€ null์ผ ๊ฒฝ์šฐ B๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋˜์–ด์žˆ๋‹ค.
๊ทธ๋ž˜์„œ ๊ตฌ์งˆ๊ตฌ์งˆํ•˜๊ฒŒ if๊ฐ™์€๊ฑธ ๋ง‰ ๋ถ™์ผ ํ•„์š”๊ฐ€ ์—†๋‹ค. image

image

image


?. ์—ฐ์‚ฐ์ž
์•ˆ์ „ํ•œ ๋ฉค๋ฒ„ํ˜ธ์ถœ ์—ฐ์‚ฐ์ž๋กœ
?.๋ผ๋Š” ๋†ˆ๋„ ์žˆ๋‹ค.
A?.B
์œ„์˜ ํ‘œํ˜„์€ A๊ฐ€ null์ด๋ฉด null์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , null์ด ์•„๋‹ˆ๋ฉด A.B๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ‘œํ˜„์‹์ด๋‹ค.

์•„๋ž˜๋Š” name์ด๋ผ๋Š” nullable ๋ฌธ์ž์—ด ๋ณ€์ˆ˜๊ฐ€ null์ด ์•„๋‹ˆ๋ฉด ๋ฉค๋ฒ„์ธ length๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , null์ด๋ฉด -1๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋‹ค. image

image

image



!! ์—ฐ์‚ฐ์ž
nullable ํƒ€์ž…์„ ๊ฐ•์ œ๋กœ nonnullํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ์—ฐ์‚ฐ์ž๋„ ์žˆ๋‹ค.

์›๋ž˜ nullable๊ณผ nonnullํƒ€์ž…์€ ์„œ๋กœ๊ฐ„์— ์ง์ ‘์ ์ธ ํ˜ธํ™˜์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ทธ๋ž˜์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค. image

image ์›๋ž˜ ์ €๊ฑธ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด ์œ„์— ์–ธ๊ธ‰ํ•œ ?:๋ฅผ ์“ฐ๋Š”๊ฒŒ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ทผ๋ฐ ๊ฐ€๋” null์ด ์•„๋‹ˆ๋ผ๋Š”๊ฑธ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„๋•Œ๊ฐ€ ์žˆ๋‹ค.
!! ์—ฐ์‚ฐ์ž๋Š” ๊ทธ๋Ÿด๋•Œ ์“ด๋‹ค.

์•„๋ž˜ ํ‘œํ˜„์‹์€ A๋ฅผ nonnull๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฐ๋‹ค.
A!! image

image ์ž˜ ๋™์ž‘ํ•œ๋‹ค.

๊ทธ๋Œ€์‹  null์ผ ๊ฒฝ์šฐ ์˜ˆ์™ธ๊ฐ€ ํ„ฐ์ง„๋‹ค. image

image ์•ˆ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค.


ํ”Œ๋žซํผ ํƒ€์ž… !
์ฝ”ํ‹€๋ฆฐ์„ ์“ฐ๋‹ค๋ณด๋ฉด ์ž๋ฐ”์˜ api๋ฅผ ๋•ก๊ฒจ์“ธ ์ผ์ด ์žˆ๋‹ค.
์ด์ œ๊ป ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ๊ฒƒ์ฒ˜๋Ÿผ ์ž๋ฐ”์™€ ์ฝ”ํ‹€๋ฆฐ์€ ํƒ€์ž… ์‹œ์Šคํ…œ์ด ์ข€ ๋‹ค๋ฅด๋‹ค.
๊ทธ๋ž˜์„œ ์ฝ”ํ‹€๋ฆฐ์—์„œ ์ž๋ฐ”์˜ ํด๋ž˜์Šคํƒ€์ž…์€ !๊ฐ€ ๋’ค์— ๋ถ™๋Š” ํ˜•ํƒœ๋กœ ์ธ์‹๋˜๋Š”๋ฐ, ์ด๊ฑฐ๋Š” ํ•ญ์ƒ nullable ํƒ€์ž…์œผ๋กœ ์ธ์ง€ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.
์ฝ”ํ‹€๋ฆฐ์—์„œ ํ”Œ๋žซํผ ํƒ€์ž…์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.