티스토리 뷰
728x90
app.getProgress().getStudyDuration()과 같이 호출 할 때 progress가 null인 경우 NullPointerException가 발생하는 것이 흔한 일이었음
그래서
if (progress ≠ null) {
}
과 같이 null 체크를 해줘야했음.
public Progress getProgress() {
if (this.progress != null) {
throw new IllegalStateException();
}
return progress;
}
위와 같이 null 인 경우 에러를 throw 하기도 했었으나 좋은 사용 예는 아님
Java8에서 부터는 비어있는 값이 있을 경우 Optional을 이용해서 처리할 수 있음
public Optional<Progress> getProgresS() {
return Optional.ofNullable(progress);
}
- Optional은 여러 곳에서 사용할 수 있지만 return type으로 쓰는 것이 권장사항
- Collection, Map, Stream Array, Optional은 Optional로 감싸지 말 것 (컨테이너 성격의 instance 들은 Optional로 두 번 감싸는 것과 같음)
Optional.of(progress); // Null 값 비 허용 > NullPointerException
Optional.ofNullable(progress); // Null 값 허용
Optional.ifPresent
프리미티브 타입용 Optional은 따로 있음
- OptionalInt
- OptionalLong
- 등등
Optional 만들기
- Optional.of()
- Optional.ofNullable()
- Optional.empty()
Optional에 값이 있는지 없는지 확인하기
- isPresent()
- isEmpty() (Java 11~)
Optional에 있는 값 가져오기
- get()
- 만약에 비어있는 Optional에서 무언가를 꺼낸다면?
Optional에 값이 있는 경우에 그 값을 가지고 ~~를 하라
- ifPresent(Consumer)
- 예) Spring으로 시작하는 수업이 있으면 id를 출력하라
Optional에 값이 있으면 가져오고 없는 경우에 ~~를 리턴하라
- orElse(T)
- 예) JPA로 시작하는 수업이 없다면 비어있는 수업을 리턴하라
Optional에 값이 있으면 가져오고 없는 경우에 ~~를 하라
- orElseGet(Supplier)
- 예) JPA로 시작하는 수업이 없다면 새로 만들어서 리턴하라
Optional에 값이 있으면 가져오고 없는 경우 에러를 던져라
- orElseThrow()
Optional에 들어있는 값 걸러내기
- Optional filter (Predicate)
Optional에 들어있는 값 변환하기
- Optional map(Function)
- Optional flatMap(Function) : Optional 안에 들어있는 인스턴스가 Optional인 경우에 사용하면 편리함
728x90
'헉!! > jsp, java' 카테고리의 다른 글
[Spring] URL 응답결과 검증 테스트 코드 (0) | 2024.11.13 |
---|---|
[JAVA] 제어 문자 (Control Characters) 제거 (0) | 2024.11.08 |
[Java] Functional Interface 와 Lambda (0) | 2024.07.20 |
[Java] Stream (0) | 2024.07.20 |
[JAVA] pdfbox 텍스트 구분자 넣기 (0) | 2020.11.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- oracle
- 제이쿼리
- Spring
- 자바스크립트
- jQuery
- Objective C
- tomcat
- 오브젝트 C
- iOS 개발
- 오브젝티브 C
- Objective-C
- zero
- 아이폰 어플리케이션
- 티스토리챌린지
- Object C
- 아이폰
- 오블완
- iBATIS
- Java
- 자바
- JSP
- iPhone
- Spring Framework
- MAC OSX 10.7
- IT
- Programming
- JavaScript
- SQL
- MySQL
- 아이폰 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함