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