본문 바로가기
프로그래밍언어/JAVA

Optional object생성 (isPresent())

by 스키피땅콩버터 2020. 12. 29.
반응형

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