Class Result<T,E>

java.lang.Object
com.dudko.tools.safejavastreams.core.Result<T,E>
Type Parameters:
T - the type of the success value
E - the type of the error value
Direct Known Subclasses:
Result.Failure, Result.Success

public abstract class Result<T,E> extends Object
Result is a container for a computation that may either result in a value (Success) or an error (Failure). Similar to Either<E, T>.
  • Constructor Details

    • Result

      public Result()
  • Method Details

    • isSuccess

      public abstract boolean isSuccess()
      Returns true if this is a success result.
    • isFailure

      public boolean isFailure()
      Returns true if this is a failure result.
    • get

      public abstract T get()
      Returns the success value or throws if failure.
    • getError

      public abstract E getError()
      Returns the error value or throws if success.
    • getOrElse

      public T getOrElse(T defaultValue)
      Returns the success value or a default if failure.
    • getOrElseGet

      public T getOrElseGet(Function<? super E,? extends T> supplier)
      Returns the success value or result of a supplier if failure.
    • orElseThrow

      public T orElseThrow(Function<? super E,? extends RuntimeException> exceptionMapper)
      Returns the success value or throws mapped exception if failure.
    • toOptional

      public Optional<T> toOptional()
      Returns success value as Optional or empty if failure.
    • toEither

      public Either<E,T> toEither()
      Converts this Result to an Either.
    • map

      public abstract <U> Result<U,E> map(Function<? super T,? extends U> mapper)
      Applies the function to the success value.
    • flatMap

      public abstract <U> Result<U,E> flatMap(Function<? super T,Result<U,E>> mapper)
      Applies the function to the success value, returning another Result.
    • fold

      public abstract <U> U fold(Function<? super E,? extends U> failureMapper, Function<? super T,? extends U> successMapper)
      Applies one of two functions depending on the result type.
    • onSuccess

      public Result<T,E> onSuccess(Consumer<? super T> action)
      Executes action if success.
    • onFailure

      public Result<T,E> onFailure(Consumer<? super E> action)
      Executes action if failure.
    • peek

      public Result<T,E> peek(Consumer<? super Result<T,E>> action)
      Executes action regardless of result type.
    • filter

      public Result<T,E> filter(Predicate<? super T> predicate, Function<? super T,? extends E> onFailure)
      Applies predicate to the value, turning success into failure if predicate fails.
    • mapError

      public abstract <F> Result<T,F> mapError(Function<? super E,? extends F> mapper)
      Maps the error value if this is a failure.
    • recover

      public Result<T,E> recover(Function<? super E,? extends T> recovery)
      Recovers from failure with a fallback value.
    • recoverWith

      public Result<T,E> recoverWith(Function<? super E,Result<T,E>> recovery)
      Recovers from failure with another Result.
    • success

      public static <T, E> Result<T,E> success(T value)
      Creates a success result.
    • failure

      public static <T, E> Result<T,E> failure(E error)
      Creates a failure result.