티스토리 뷰
JAVA에서 제공하는 클래스 중 하나인 Optional을 알아보자.
null 을 쉽게 처리하고자 도입이 되었다고 한다.
NullPointerException을 방지할 수 있도록 도와주는 클래스로 null 이 올 수 이쓴 값을 감싸는 Wrapper 클래스라는데 무슨 얘긴지는 나중에 이해될 듯하다.
Optoinal<String> optional = ... ;
optiona.isPresent(); //boolean
optional.ifPresent(this::somefunctino());
optional.ifPresent(string -> somefunction());
optiona.get(); //값에 접근하는 메서드
위와 같은 메서드들을 사용할 수 있음
그런데 optiona.get() 을 하기 전에 optional 객체가 값이 확실하게 있는지 확인을 해야한다.
Optional<Person> somePerson = findbyId(1);
Person person = somePerson.orElseThrow(CustomException::new);
String name = person.getName();
if(findbyId(1).isPresent()){
//이는 좋은 예는 아니다.
}
ifPresent ~ get 방식보다 orElse, orElseGet, orElseThrow 등을 사용하는 편을 권장!
findById(1).orElseGet(()-> new Person("NOBODY"));
orElseGet 사용 예..
그리고 Spring Data JPA를 사용할 때 Repository에서 리턴 타입을 Optional로 바로 받을 수 있어서,
JPA를 사용할 때 이 점을 활용하면 좋다.
😀CrudRepository.class 에서 보면
Optional<T> findById(ID id);
그리고 Iterable이 등장
Iterable<T> findAll();
Iterable은 Collection의 상위 인터페이스라고 한다. Iterator와는 또 다르다고 함!
https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html
여기에 Iterable에 대한 설명이 있고.. 보면
Iterable 인터페이스에 있는 메서드가 forEach(), iterator(), spliterator() 가 있어서
Iterator<T> 타입을 반환할 수도 있다는 듯 하다.
Iterator는 Collection의 상위개념.. (An iterator over a collection)
'#2 > JAVA' 카테고리의 다른 글
[JAVA] 문자(열)을 요리조리~~ split, charAt, toCharArray() (0) | 2022.12.23 |
---|---|
[Java/Spring] static을 사용해보자. (0) | 2022.06.30 |
[java] 인터페이스 interface 에 관한 간단한 생각 (0) | 2021.12.30 |
[Java] Wrapper 클래스, 오토박싱, 언박싱.. (0) | 2021.11.08 |
casting, parsing 캐스팅, 파싱 (0) | 2021.11.08 |