그래서 저는 Optionals와 함께 일하고 이상한 행동을 보았습니다. 나는 이것이 정말로 intendet "feature"인지 아니면 ... something ...인지 알기를 원한다. ...orElse- 분기 옵션에서 예외가 발생합니다.
여기에 주어진 예가있다. 나는 orElse가있는 orElse의 Option을 가진 메소드를 가지고있다. 기타 선택 사항. 다른 옵션이없는 경우, 나는 IllegalArgumentException을 올릴 수 있습니다 :
firstOptionalVar.orElse(secondOptionalVar.orElseThrow(IllegalArgumentException::new));
는 이제
secondOptionalVar
는 선택 사항 비어는 IllegalArgumentException을 올릴 경우,
firstOptionalVar
이 존재하는 경우에도 마찬가지입니다. 이것은 나에게 맞는 것 같지 않다.
firstOptionalVar
이 존재하지 않으면 IllegalArgumentException을 발생시킬 것으로 예상됩니다.
이 같은 java7-방법과이 동작을 arround 얻을 수있는 큰 문제는 아니다 : 다른 사람이 전에이 문제를 경험 한
firstOptionalVar.isPresent() ? firstOptionalVar.get() : secondOptionalVar.orElseThrow(IllegalArgumentException::new);
? 이것은 정말로 선택자가 행동해야하는 방식입니까?
'flatMap'은 불행히도 그 반대입니다. – biziclop
예외에 대한 anwer는 연결된 질문 또는 사용자가 얻은 대답에서 찾을 수 있습니다. 수행 할 "or"작업은 Java 9에서 사용할 수 있습니다. http://stackoverflow.com/questions/24599996/get-value-from-one-optional-or-another – Tunaki
답변 해 주셔서 감사합니다. @resueman의 해결책은 나를 위해 작동하지만 java9가이 경우를 처리하는 방법을 알고있는 것이 좋습니다. – Numbernick