Java 8 의 새로운 Optional 유형 으로 작업하고 있으며 기능적으로 지원되지 않는 일반적인 작업 인 "orElseOptional"과 같은 기능을 살펴 보았습니다.
다음 패턴을 고려하십시오.
Optional<Result> resultFromServiceA = serviceA(args);
if (resultFromServiceA.isPresent) return result;
else {
Optional<Result> resultFromServiceB = serviceB(args);
if (resultFromServiceB.isPresent) return resultFromServiceB;
else return serviceC(args);
}
이 패턴에는 여러 형태가 있지만, 현재 옵션이 존재하지 않는 경우에만 호출되는 새로운 옵션을 생성하는 함수를 취하는 옵션에 대해 "orElse"를 원합니다.
구현은 다음과 같습니다.
public Optional<T> orElse(Supplier<Optional<? extends T>> otherSupplier) {
return value != null ? this : other.get();
}
의도하지 않은 방식으로 Optional을 사용하는 경우와 같은 방법이 존재하지 않는 이유가 있는지, 사람들 이이 사건을 처리하기 위해 다른 방법을 생각해 낸 경우 궁금합니다.
내 코드로 작업하는 사람들이 반드시 존재한다는 것을 알지 못하기 때문에 사용자 정의 유틸리티 클래스 / 메소드와 관련된 솔루션은 우아하지 않다고 생각해야합니다.
또한 누구나 아는 경우 그러한 방법이 JDK 9에 포함됩니까? 어떻게 그러한 방법을 제안 할 수 있습니까? 이것은 나에게 API에 대한 눈부신 누락처럼 보입니다.
orElseGet()