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

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

  •  29-06-2023
  •  | 
  •  

Pergunta

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?

Foi útil?

Solução

Sure.

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

Outras dicas

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"));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top