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

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

  •  29-06-2023
  •  | 
  •  

Frage

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?

War es hilfreich?

Lösung

Sure.

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

Andere Tipps

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"));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top