it-swarm.com.ru

Java 8 ссылок на методы: укажите поставщика, способного предоставить параметризованный результат

Я хотел бы использовать

Java.util.Optional.orElseThrow()

с типом исключения, который запрашивает параметр конструктора. Что-то вроде этого:

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

Есть ли способ создать поставщика, который передает значение моего аргумента?

233
mdo

Конечно. orElseThrow(() -> new MyException(someArgument)).

443
Louis Wasserman

Похоже, что вы можете выбросить только RuntimeException из метода orElseThrow. В противном случае вы получите сообщение об ошибке типа MyException cannot be converted to Java.lang.RuntimeException

21
Manu
optionalUsers.orElseThrow(() -> new UsernameNotFoundException("Username not found"));
6
Ashish Pushp