В чем разница между Vavr `Try.of` и` Try.run` - PullRequest
0 голосов
/ 14 июля 2020

Требуется дополнительная информация о различиях между javaslang Try.of() и Try.run()

Например,

Try.of(() -> Integer.valueOf(str)).getOrElse(1) компилируется нормально, а Try.run(() -> Integer.valueOf(str)).getOrElse(1) - нет.

найдено в упаковке javaslang.control. Подробнее о библиотеке:

1 Ответ

3 голосов
/ 14 июля 2020

Try.of() принимает CheckedSupplier, у которого есть метод get() для «получения результата».

Try.run() принимает CheckedRunnable, у которого есть метод void run() для «выполнения побочных эффектов».

Так сказано прямо в документации .

Разница такая же, как и между стандартными Java Supplier («представляет поставщика результатов») и Runnable («выполнить код ... может выполнять любое действие») . Один предназначен для получения значения , другой - для выполнения некоторого кода .

Примеры различий в использовании см .:

andThenTry(CheckedConsumer<? super T> consumer)

Try.of(() -> 100)
   .andThen(i -> System.out.println(i));

andThenTry(CheckedRunnable runnable)

Try.run(A::methodRef)
   .andThen(B::methodRef)
   .andThen(C::methodRef);
...