[java] Java 8 메소드 참조 : 매개 변수화 된 결과를 제공 할 수있는 공급 업체 제공

사용하고 싶습니다

java.util.Optional.orElseThrow()

생성자 매개 변수를 요청하는 예외 유형이 있습니다. 이 같은:

.orElseThrow(MyException::new(someArgument)) // obviously NOT working

인수 가치를 전달하는 공급 업체를 만드는 방법이 있습니까?



답변

확실한.

.orElseThrow(() -> new MyException(someArgument))


답변

메소드에서 RuntimeException 만 던질 수있는 것으로 보입니다 orElseThrow. 그렇지 않으면 다음과 같은 오류 메시지가 나타납니다. MyException cannot be converted to java.lang.RuntimeException

업데이트 :-이전 버전의 JDK에서 문제였습니다. 최신 버전에서는이 문제가 표시되지 않습니다.


답변

optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));


답변