Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 창업
- spring async
- 창업형인간
- AWS 키페어
- github CI/CD
- java null 처리
- 라이프해킹스쿨
- optional
- dockerfile
- 자바 스트림
- 스트림 예제
- AWS S3
- java stream
- @async
- AWS 프로젝트
- AWS
- AWS EC2
- spring multi thread
- 마인드
- Optional 사용법
- 비주얼 스튜디오 코드
- ssh
- vscode
- CI/CD
- 창업형인간되기
- Visual Studio Code
- AWS ssh
- 창업 마인드
- AWS 프로젝트 올리기
- java Optional
Archives
- Today
- Total
Wookim
[java 1.8] Optional을 이용한 null 처리 본문
Optional
자바 1.8 버전 이후로 추가된 함수지향 메소드
사용 이유
- null 처리의 간소화
- 특정 데이터의 필터링
- null 이 가능한 데이터의 명시적인 표현
- 가독성 향상
null 처리 간소화
ex) 기존 방식
if(someClassInstace ! = null
&& someClassInstace.innerObject ! = null
&& someClassInstace.innerObject.memberData ! = null
&& someClassInstace.innerObject.memberData > 5){
// 로직
}else{
// 예외 처리
}
ex) Optional 처리
Optional.of(someClassInstance) // null 이면 orElseThrow
.map(x -> x.innerObject) // null 이면 orElseThrow
.map(x -> x.memberData) // null 이면 orElseThrow
.filter(x -> x > 5) // 5보다 작다면 orElseThrow
.orElseThrow(()->new RuntimeException("에러 메시지"));
// 로직
Optional 메소드 리스트
1. of
// 객체가 null이 아닐 때 사용하는 함수 Optional.of()
// 해당 함수는 a 라는 객체가 null이면 nullpointException 발생
Optional<ClassA> optA = Optional.of(a);
2. ofNullable
// a가 null이 가능할때 사용
// a가 null이 들어와도 NPE 예외 발생 x
// 대신 null인 a클래스를 Optional 클래스로 래핑함
Optional<ClassA> optA = Optionl.ofNullable(a);
3. orElse
// getA 값이 있던 없던 항상 default A
String a = optA.map(ClassA::getA).orElse("default A");
4. orElseGet
// getA 값이 null 이면 default A 값을 할당하는 코드
String a = optA.map(ClassA::getA).orElseGet("default A");
5. map
이전 인자 (of, nullOf)에서 특정 데이터로 변경(접근)하는 함수
SomeClass someInstance = new SomeClass();
String name = Optional.of(someInstance) // 인스턴스 null 체크
.map(SomeClass::getName) // 멤버 null 체크
.orElseGet(()->"default name"); // 값이 null일 때 설정한 값 리턴
6. filter
데이터에 필터(조건)을 걸어 데이터 전처리
SomeClass someInstance = new SomeClass();
String name = Optional.of(someInstance) // 인스턴스 null 체크
.map(SomeClass::getName) // 멤버 null 체크
.filter(x->!x.empty())
.orElseGet(()->"default name"); // 값이 null일 때 설정한 값 리턴
Comments