Objects.requireNonNull()
public static <T> T requireNonNull(T obj) {
if (obj == null)
throw new NullPointerException();
return obj;
}
๊ทธ๋ฅ obj๊ฐ null๊ฐ์ด๋ฉด NPE ํฐ์ง๊ฒ ํด์ฃผ๋ ๋งค์๋ ์๋๊ฐ?
์ด๊ฑธ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด ์ฐพ์๋ณด์๋ค.
์ด๊ฑธ ์ฌ์ฉํ๋ ์ด์ ?
- explicity (๋ช ์์ฑ)
- fail fast (๋น ๋ฅธ ์คํจ)
explicity (๋ช ์์ฑ)
์ฝ๋์์ data๊ฐ null ์ด ์๋์ด์ผํจ์ ๋ช ์์ ์ผ๋ก ํํํ ์ ์์.
public void process(byte[] data) {
Objects.requireNonNull(data, "data must not be null");
int length = data.length;
System.out.println(length);
}
- data๊ฐ ์ ๋ null์ด๋ฉด ์ ๋จ
- null ํ์ฉ ์ฌ๋ถ๊ฐ ์๋ฌต์ → ๋ช ์์ ๊ณ์ฝ์ผ๋ก ์ ํ๋จ
fail fast (๋น ๋ฅธ ์คํจ)
: ์ฅ์ ๊ฐ ๋ฐ์ํ ์์ ์์ ์ฆ์ ํ์ ํ ์ ์๋ ๊ฒ์ ์๋ฏธํจ. (๋์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ฐ๋ก ์ค๋ฅ๋ฅผ ์๋ฆฌ๊ณ ์์ ์ค๋จ)
requireNonNull์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ (fail late)
public void process(byte[] data) {
int length = data.length; // ์ฌ๊ธฐ์ NPE ๋ฐ์
System.out.println(length);
}
[๋์ ํ๋ฆ]
- data == null ์ธ ์ํ๋ก ๋ฉ์๋ ์ง์
- ์ฝ๋๊ฐ ๊ณ์ ์งํ๋จ
- ์ ์คํจ ์ง์ ์ data.length
์์ธ ๋ฉ์์ง: java.lang.NullPointerException
[๋ฌธ์ ์ ]
- ์ null์ด ๋ค์ด์๋์ง ์ ์ ์์
- ์๋ฌ๊ฐ ์๋ฏธ ์๋ ์ง์ ์์ ๋ฐ์
- ๋๋ฒ๊น ์ ํธ์ถ ์คํ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ์ผ ํจ
Objects.requireNonNull()์ ์ฌ์ฉํ ๊ฒฝ์ฐ
public void process(byte[] data) {
Objects.requireNonNull(data, "data must not be null");
int length = data.length;
System.out.println(length);
}
[๋์ ํ๋ฆ]
- ๋ฉ์๋ ์ง์ ์ฆ์ null ๊ฒ์ฌ
- null์ด๋ฉด ๋ฐ๋ก ์คํจ
์์ธ ๋ฉ์์ง: java.lang.NullPointerException: data must not be null
[์ฅ์ ]
- ์คํจ ์ง์ = ์์ธ ์ง์
- ๋ฉ์์ง๋ก ์๋ ๋ช ํ
- ์ดํ ๋ก์ง์ null ๊ฑฑ์ ์์ด ์์ฑ ๊ฐ๋ฅ
๋น ๋ฅธ ์คํจ๊ฐ ํ์ํ ์ด์
* ๊ฒฐํจ ์กฐ๊ธฐ ๋ฐ๊ฒฌ
* ๋น์ฉ ์ ๊ฐ ๋ฐ ์ผ์ ๊ด๋ฆฌ
* ํ์ง ๊ฐ์
* ํ์ต ๋ฐ ํ์ ๋ฌธํ
๊ฒฐ๋ก
์ด ๊ฐ์ด null์ด๋ฉด ์ดํ ๋ก์ง์ ์ ์์ ์ผ๋ก ์ํํ ์ ์๋ค๋ฉด
Objects.requireNonNull์ ์ด๋ค.
'๐คซ ETC' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ์ํํธ์จ์ด ๊ฐ๋ฐ ์๋ช ์ฃผ๊ธฐ (SDLC) (0) | 2025.12.16 |
|---|---|
| [Github] Github Newline + IntelliJ์์ ์ต์ ์ค์ (1) | 2025.06.18 |
| [OPIc] 3์๊ฐ๋ ์ ๊ณต๋ถํ๊ณ ์คํฝ IH ๋ฐ๊ธฐ (2) | 2025.06.13 |