자바 에서 optional 의 응용

2344 단어 자바
Option 에 대한 소 개 는 자바 8 의 Optional 류 를 깊이 이해 하면 되 지만 복잡 한 사용 은 인터넷 에서 찾 지 못 했 습 니 다.여기 서 제 가 개발 할 때 만난 실제 사례 와 결합 하여 Option 의 사용 을 말씀 드 리 겠 습 니 다.
public class PictureCondition {
    private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

}

       여기 서 먼저 간단 한 대상 이 있 습 니 다.안에 하나의 속성 만 있 습 니 다.Controller 층 에서 PictureCondition 의 대상 을 받 아야 합 니 다.이 대상 안의 url 속성 이 비어 있 거나 빈 칸 이 있 는 지 판단 해 야 합 니 다.있 으 면 이상 을 던 져 야 합 니 다.
      일반적인 문법 을 사용 하면 이렇게 판단 합 니 다.
if(pictureCondition==null||pictureCondition.getUrl()==null||"".equals(pictureCondition.getUrl().trim())){
            throw new RuntimeException("   ");
 }

      Option 을 사용 하 는 방법 은 다음 과 같 습 니 다.
Optional.ofNullable(pictureCondition)
                .map(PictureCondition::getUrl)
                .filter(x -> !"".equals(x.trim()))
                .orElseThrow(() -> new RuntimeException("   "));

      단층 순환 에 대해 서 는 일반적인 표기 법 을 사용 해도 대응 할 수 있 지만 층수 가 많 을 때 이렇게 쓰 는 것 은 좋 지 않다.
 
user!=null 은 진실 입 니 다.연 결 된 orders 의 맵 집합 을 얻 었 습 니 다.가짜 로 빈 집합 으로 돌아 갈 때 우 리 는 위의 orElse,orElseGet 방법 이 모두 힘 이 없 을 때 그것 은 원래 map 함수 의 책임 입 니 다.우 리 는 이렇게 할 수 있 습 니 다.
return user.map(u -> u.getOrders()).orElse(Collections.emptyList())
 
//          Java 8      
if(user!=null && user.getOrders!=null) {
  return user.getOrders();
} else {
  return Collections.emptyList();
}

map 는 무한 연결 이 가능 합 니 다.예 를 들 어 한 층 더 깊이 들 어가 사용자 이름 을 얻 는 대문자 형식 입 니 다.
return user.map(u -> u.getUsername())
           .map(name -> name.toUpperCase())
           .orElse(null);

이것 은 이전에 두 어야 합 니 다.모든 단계 호출 의 전 개 는 null 값 의 판단 을 넣 어야 합 니 다.
User user = .....
if(user != null) {
  String name = user.getUsername();
  if(name != null) {
    return name.toUpperCase();
  } else {
    return null;
  }
} else {
  return null;
}

주의:Option 류 는 빈 지침 의 이상 을 판단 할 때 사용 하 는 것 입 니 다.다른 if.else 는 빈 지침 을 판단 하 는 문제 가 아니라면 Option 류 를 사용 하지 마 십시오.lz 는 잘못된 부분 에 빠 졌 습 니 다.Option 류 를 배 웠 다 고 생각 하고 if..else 를 보면 Option 으로 생각 합 니 다.이렇게 하 는 것 은 정말 큰 잘못 입 니 다.Option 의 경우 값 이 null 인지 아 닌 지 를 판단 할 때 Option 이 역할 을 합 니 다.

좋은 웹페이지 즐겨찾기