Java 8 method references: provide a Supplier capable of supplying a parameterized result

StackOverflow https://stackoverflow.com/questions/22917138

  •  29-06-2023
  •  | 
  •  

Вопрос

I'd like to use

java.util.Optional.orElseThrow()

with an Exception type that asks for a constructor parameter. Something like this:

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

Is there a way to create a Supplier that passes my argument value in?

Это было полезно?

Решение

Sure.

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

Другие советы

It appears that you can throw only RuntimeException from the method orElseThrow. Otherwise you will get an error message like MyException cannot be converted to java.lang.RuntimeException

Update:- This was an issue with an older version of JDK. I don't see this issue with the latest versions.

optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top