Null 때문에 발생하는 문제
1. 에러의 근원
NullPointException이 자주 발생한다..
2. 코드를 어지럽힌다.
중첩된 null 확인 코드로 인해 가독성이 떨어진다.
3. 아무 의미가 없다.
null은 아무 의미도 없다. 특히 정적 형식 언어에서 값이 없음을 표현하는 방법으로는 적절하지 않다.
4. 자바철할에 위배
자바는 포인터를 숨겼다. 하지만 null은 포인터다. ㅠ
5. 형식 시스템에 구멍을 만든다.
null은 무형식이며 정보를 포함하지 않으므로 모든 레퍼런스 형식에 null을 할당할 수 있다.
JAVA8에선 Optional이라는 클래스를 제공한다.
메서드 |
설명 |
empty |
빈 Optional 인스턴스 반환 |
filter |
값이 존재하며 프레디케이트와 일치하면 값을 포함하는 Optional을 반환하고, 값이 없거나 프레디케이트와 일치하지 않으면 빈 Optional을 반환 |
flatMap |
값이 존재하면 인수로 제공된 함수를 적용한 결과 Optional을 반환하고, 값이 없으면 빈 Optional을 반환 |
get |
값이 존재하면 Optional이 감싸고 있는 값을 반환, 없으면 NoSuchElementExeption 발생 |
ifPresent |
값이 존재하면 지정된 Consumer를 실행, 없으면 아무 일도 일어나지 않음 |
isPresent |
값이 존재하면 True, 없으면 False |
map |
값이 존재하면 제공된 매핑함수를 적용 |
of |
값이 존재하면 값을 감싸는 Optional을 반환, 값이 Null이면 NullPointException 발생 |
ofNullable |
값이 존재하면 값을 감싸는 Optional을 반환, 값이 Null이면 빈 Optional을 반환 |
orElse |
값이 존재하면 값을 반환, 없으면 디폴트 값을 반환 |
orElseGet |
값이 존재하면 값을 반환, 없으면 Supplier에서 제공하는 값 반환 |
orElseThrow |
값이 존재하면 값을 반환, 없으면 Supplier에서 생성한 예외 발생 |
'개발 > JAVA' 카테고리의 다른 글
Java8 함수형 (0) | 2018.09.19 |
---|---|
Math.random() (0) | 2018.08.07 |
assertThat 사용 (0) | 2018.06.04 |
BigDecimal 사용법 (0) | 2018.06.03 |
string.join 사용기 (0) | 2018.05.14 |