날아라쩡글이의 블로그입니다.

Optional 본문

중앙 HTA (2106기) story/java API story

Optional

날아라쩡글이 2022. 1. 4. 08:01
반응형

자바에서 nullPointerException이 발생하는 것을 방지하기 위해서 만든 API이다. 

  • 자바 8에 도입된 API이다. 
  • nullPointerException을 피하기 위해서 null인지 아닌지 null을 검사하는 기능이 포함된 optional<T>가 추가되었다.
  • optional<T>는 null이 될수도 있는 ㄱ밧을 값싸는 wapper클래스다. 
  • 주요API
    • optional.of(T value)
      • null아닌 값이 저장된 optional객체를 반환한다. 
    • optional.ofNullable(T value)
      • null일수도있는 값이 저장된 optional객체를 반환한다. 
    • optional.empty()
      • 아무값도 가지고 있지 않은 비어있는 optional객체를 반환한다. 
    • ifPresent()
      • optional객체에 저장된 값이 존재하면 true, 없으면 false를 반환한다.
    • get()
      • optional객체에 저장된 값을 반환한다.
    • orElse(T other)
      • optional객체에 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인자로 전달된 값을 반환한다. 
    • orElseThrow(suppier exceptionSuppier)
      • optional객체에 저장된 값이 존재하면 그 값을 반환하고, 값이 존재하지 않으면 인자로 전달된 예외를 발생시킨다. 
  • optional객체는 언제나 null이아니다. 

@Controller 
public class UserController{
@AutoWired UserService userService
@GETMappting("/user/{id}")
ReponseEntity<User>find(@pathVariable("id") String id) { //뒤의값을 읽어올때 pathVariable을 적는다.
oprional<User> optional = UserService.findUser(id);//저장된 User가 담긴 Optional객체획득
if(optional.isPresent()){ //true면 값이있다. 값이 있는지 확인하기
User user = optional.get();//optional객체 에서 값꺼내기
return ResponseEnfity<>(User.HttpState.ok); //응답객체를 반환한다. 
}
return new ResponseEnfity<>(HttpStats.Not_fount)// 404의 응답객체를 반환한다. 
}
}

optional의 값을 꺼내려면 무조건 isPresent()후 get()으로 꺼내서 보내준다.
nullpointer의 예외가 적어ㅣㄴ다. 

반응형
Comments