Я пытаюсь вернуть значение Either
в зависимости от значения параметра. Моя цель - вернуть Either.right (), если опция присутствует в противном случае, код должен вернуть Either.left ().
Я использую Java 8 и vavr 0.9.2
Я хочу избежать условного употребления
public Either<String, Integer> doSomething() {
Optional<Integer> optionalInteger = Optional.of(Integer.MIN_VALUE);
Option<Integer> integerOption = Option.ofOptional(optionalInteger);
return integerOption.map(value -> {
//some other actions here
return Either.right(value);
}).orElse(() -> {
//some other checks her also
return Either.left("Error message");
});
}
ошибка компилятора с этим сообщением
Error:(58, 7) java: no suitable method found for orElse(()->Either[...]age"))
method io.vavr.control.Option.orElse(io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>) is not applicable
(argument mismatch; io.vavr.control.Option is not a functional interface
multiple non-overriding abstract methods found in interface io.vavr.control.Option)
method io.vavr.control.Option.orElse(java.util.function.Supplier<? extends io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>>) is not applicable
(argument mismatch; bad return type in lambda expression
no instance(s) of type variable(s) L,R exist so that io.vavr.control.Either<L,R> conforms to io.vavr.control.Option<? extends io.vavr.control.Either<java.lang.Object,java.lang.Integer>>)