Free Lines Arrow
본문 바로가기
Language/Java

[Java] Null 안전하게 다루기

by skahn1215 2021. 8. 24.
728x90
반응형

Null 이란?

  • 미확인 값 또는 값이 할당 되지 않는 상태를 표현한다.
  • int 형은 0 을 기본 값으로 가진다. 하지만 참조타입은 기본값으로 null 을 갖는다.

 

 

 

Null은 왜 문제가 될까?

  •  Null의 아버지 토니 호어가 이를 두고 'The Billion Dollar Mistake(10억 달러짜리 실수)'라고 할 정도다
  •  널 참조를 허용했는데 이 때문에 수십 년 동안 일어난 문제가 'billion dollar' 수준으로 손해가 될 만큼 엄청나다는 것을 표현했다.

 

 

기본으로 null 을 쓰지말자

  • 함수를 사용하는 쪽에서 null 값이 왔는지 제대로 체크하지 않고 값을 쓰면 오류가 터진다.
  • 프로그래머가 아닌 사용자도 잘 쓰던 프로그램이 갑자기 오류를 토해내면서 다운되는 바람에 작업을 날려먹는 일이 있을 텐데 오류 메시지를 살펴보면 대부분 null 참조 문제다.

 

 

Optional을 사용하자

https://vprog1215.tistory.com/58

 

[Java] Optional 와 OptionalInt

Optional에 대해 알아보자 Optional 이란? Optional 는 지네릭 클래스로 T 타입의 객체를 감싸는 래퍼 클래스이다. 모든 타입의 참조 변수를 담을수 있다. 최종 연산결과를 단순히 반환하는게 아니라 Opti

vprog1215.tistory.com

 

 

 

비교할경우 equals() 를 사용하자

Object obj = null;

if("TEST".equals(obj)) {
	 // TODO
}

 

 

 

null safe methods와 library를 사용하자

  • null safe인지 아닌지를 annotation을 사용하여 표시하는 것이 좋다.
StringUtils.isEmpty(null)
StringUtils.isBlank(null)
StringUtils.isNumeric(null)
StringUtils.isAllUpperCase(null)

 

 

 

@NotNull 이나 @Nullable 어노테이션을 사용한다.

public final @Nullable String usetName;

 

 

 

 

 

 

 

참고: https://www.newiki.net/wiki/Null

 

Null - 내위키

사전에서 찾아보면 '아무런 가치가 없는 것'을 뜻하는 형용사다. 컴퓨터 프로그래밍에서 자주 만나볼 수 있는 값이자, 온갖 버그를 일으키는 만악의 근원으로 찍혀 있는 값이기도 하다. 0과는 다

www.newiki.net

 

728x90
반응형

'Language > Java' 카테고리의 다른 글

[Java] HashMap, hashCode(), equals()  (0) 2021.09.06
[Java] getter 와 setter  (0) 2021.09.05
[Java] 직렬화, 역직렬화  (0) 2021.08.23
[Java] java8 에 추가된 기능  (0) 2021.08.23
[Java] Join() 과 StringJoiner  (0) 2021.08.23

댓글