Optional객체를 생성하는 여러 가지 방법이 있다. 정리해보도록 한다.
가장 단순한 빈 optional객체를 생성하려면 단순히 empty() 정적 메서드 사용하면 된다.
Optional<String> empty = Optional.empty(); assertFalse(empty.isPresent()); |
optioanl객체 내에 값이 있는지 없는지 확인하기 위해 isPresent() 메서드를 사용한다.
null이 아닌 값으로 Optional을 만든 경우에만 값이 존재한다.
Optional<String> empty = Optional.empty(); assertFalse(empty.isPresent()); |
isPresent()및 isEmpty() 로 값 유무 체크하는 방법
메서드에서 반환된 Optianal 객체가 있거나 직접 생성한 경우 isPresent() 메서드를 사용하여 값이 있는지 없는지 알 수 있다.
Optional<String> optOf = Optional.of("coco"); assertTrue(optOf.isPresent()); Optional<String> optOfNullable = Optional.ofNullable(null); assertFalse(optOfNullable.isPresent()); |
자바 11부터는 isPresent() 말고 isEmpty()로 사용하여 확인 할 수 있다.
Optional<String> optOfNullable = Optional.ofNullable(null); assertTrue(optOfNullable.isEmpty()); |
정적 메서드 of()를 사용하여 Optional객체를 만들 수 있다. 이때 값이 null이 올 수 없다.
null이 오게 되면 nullPointException발생한다.
String name = "happy"; Optional<String> optOf = Optional.of(name); assertTrue(optOf.isPresent()); |
따라서 반드시 값이 있는 객체일 경우에 해당 메서드를 사용하면 된다.
null값이 필요한 경우 ofNullAble() 메서드를 사용하면 된다.
인수가 null값일 때에도 에러 발생하지 않고 빈 Optional객체를 반환한다.
String name = "coco"; Optional<String> optOf = Optional.ofNullable(name); assertTrue(optOf.isPresent()); |
isPresent()를 사용한 조건부 동작 처리
isPresent()를 사용하게 되면 null이 아닌 경우 코드를 실행하여 사용할 수 있습니다.
아래처럼 조건문에 이름이 존재하는지 안 한는지 체크하는 경우 내부 로직을 타기 전 오류가 나기 쉬운데,
변수를 선언한 다음에 변수에 대한 null검사를 하는 것을 잊어버릴 수 있기 때문입니다.
따라서 아래와 같은 코드는 nullPointException처리가 날 확률이 높다.
if(name != null) { System.out.println(name.length()); } |
일반적인 함수형 프로그래밍에서는 실제로 존재하는 객체에 대한 작업을 수행할 수 있다.
(람다 표현식을 이용하여 표현.)
Optional<String> optOf = Optional.of("jookipedia"); optOf.ifPresent(name -> System.out.println(name.length())); |
'프로그래밍언어 > JAVA' 카테고리의 다른 글
임의의 랜덤값 생성하기 (0) | 2021.07.19 |
---|---|
Java Stream (0) | 2021.03.15 |
JAVA8 객체지향 - 생성자/정보은닉 (0) | 2020.12.15 |
클래스와 인스턴스 (0) | 2020.11.27 |
자바 시작하기 (0) | 2020.10.03 |