Package aQute.bnd.service.result
Interface Result<V,E>
-
- Type Parameters:
V
- The value type of the Result.E
- The error type of the Result.
public interface Result<V,E>
The Result type is an alternative way of chaining together functions in a functional programming style while hiding away error handling structures such as try-catch-blocks and conditionals.
Instead of adding a throws declaration to a function, the return type of the function is instead set to Resultwhere V is the original return type, i.e. the "happy case" and E is the error type, usually the Exception type or a String if an error explanation is sufficient.
Example:public Result
divide(int a, int b) { if (b == 0) { return Result.err("Can't divide by zero!"); } else { return Result.ok(a / b); } }
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description void
accept(ConsumerWithException<? super V> ok, ConsumerWithException<? super E> err)
Terminal function that processes the result or the error<X> Result<X,E>
asError()
static <V,E>
Result<V,E>err(E error)
Returns anErr
containing the specifiederror
.static <V> Result<V,java.lang.String>
err(java.lang.String format, java.lang.Object... args)
java.util.Optional<E>
error()
Returns the error of this instance as anOptional
.<U> Result<U,E>
flatMap(FunctionWithException<? super V,? extends Result<? extends U,? extends E>> mapper)
FlatMap the contained value if this is anOk
value.boolean
isErr()
boolean
isOk()
<U> Result<U,E>
map(FunctionWithException<? super V,? extends U> mapper)
Map the contained value if this is anOk
value.<F> Result<V,F>
mapErr(FunctionWithException<? super E,? extends F> mapper)
Map the contained error if this is anErr
value.static <V,E>
Result<V,E>of(V value, E error)
static <V,E>
Result<V,E>ok(V value)
Returns anOk
containing the specifiedvalue
.V
orElse(V orElse)
Returns the contained value if this is anOk
value.V
orElseGet(java.util.function.Supplier<? extends V> orElseSupplier)
Returns the contained value if this is anOk
value.<R extends java.lang.Throwable>
VorElseThrow(FunctionWithException<? super E,? extends R> throwableSupplier)
Returns the contained value if this is anOk
value.Result<V,E>
recover(FunctionWithException<? super E,? extends V> recover)
Recover the contained error if this is anErr
value.V
unwrap()
Returns the contained value if this is anOk
value.V
unwrap(java.lang.String message)
Express the expectation that this object is anOk
value.<X extends java.lang.Throwable>
Vunwrap(java.util.function.Function<E,X> constructor)
java.util.Optional<V>
value()
Returns the value of this instance as anOptional
.
-
-
-
Method Detail
-
of
static <V,E> Result<V,E> of(V value, E error)
Returns anOk
if thevalue
parameter is non-null
or anErr
otherwise. Either one ofvalue
orerror
must not benull
.- Type Parameters:
V
- The value type of the Result.E
- The error type of the Result.- Parameters:
value
- If non-null
, anOk
result is returned with the specified value.error
- Ifvalue
isnull
, anErr
result is returned with the specified error.- Returns:
- An
Ok
if thevalue
parameter is non-null
or anErr
otherwise.
-
err
static <V> Result<V,java.lang.String> err(java.lang.String format, java.lang.Object... args)
-
isOk
boolean isOk()
- Returns:
true
if this instance represents anOk
value,false
otherwise.
-
isErr
boolean isErr()
- Returns:
true
if this instance represents anErr
value,false
otherwise.
-
value
java.util.Optional<V> value()
Returns the value of this instance as anOptional
. ReturnsOptional.empty()
if this is anErr
instance.- Returns:
- The value of this instance as an
Optional
. ReturnsOptional.empty()
if this is anErr
instance.
-
error
java.util.Optional<E> error()
Returns the error of this instance as anOptional
. ReturnsOptional.empty()
if this is anOk
instance.- Returns:
- The error of this instance as an
Optional
. ReturnsOptional.empty()
if this is anOk
instance.
-
unwrap
V unwrap()
Returns the contained value if this is anOk
value. Otherwise throws aResultException
.- Returns:
- The contained value
- Throws:
ResultException
- If this is anErr
instance.
-
unwrap
V unwrap(java.lang.String message)
Express the expectation that this object is anOk
value. Otherwise throws aResultException
with the specified message.- Parameters:
message
- The message to pass to a potential ResultException.- Throws:
ResultException
- If this is anErr
instance.
-
orElse
V orElse(V orElse)
Returns the contained value if this is anOk
value. Otherwise returns the specified alternate value.- Parameters:
orElse
- The value to return if this is anErr
instance.- Returns:
- The contained value or the alternate value
-
orElseGet
V orElseGet(java.util.function.Supplier<? extends V> orElseSupplier)
Returns the contained value if this is anOk
value. Otherwise returns the alternate value supplied by the specified supplier.- Parameters:
orElseSupplier
- The supplier to supply an alternate value if this is anErr
instance. Must not benull
.- Returns:
- The contained value or the alternate value
-
orElseThrow
<R extends java.lang.Throwable> V orElseThrow(FunctionWithException<? super E,? extends R> throwableSupplier) throws R extends java.lang.Throwable
Returns the contained value if this is anOk
value. Otherwise throws the exception supplied by the specified function.
-
map
<U> Result<U,E> map(FunctionWithException<? super V,? extends U> mapper)
Map the contained value if this is anOk
value. Otherwise return this.- Type Parameters:
U
- The new value type.- Parameters:
mapper
- The function to map the contained value into a new value. Must not benull
. The function must return a non-null
value.- Returns:
- A result containing the mapped value if this is an
Ok
value. Otherwise this.
-
mapErr
<F> Result<V,F> mapErr(FunctionWithException<? super E,? extends F> mapper)
Map the contained error if this is anErr
value. Otherwise return this.- Type Parameters:
F
- The new error type.- Parameters:
mapper
- The function to map the contained error into a new error. Must not benull
. The function must return a non-null
error.- Returns:
- A result containing the mapped error if this is an
Err
value. Otherwise this.
-
flatMap
<U> Result<U,E> flatMap(FunctionWithException<? super V,? extends Result<? extends U,? extends E>> mapper)
FlatMap the contained value if this is anOk
value. Otherwise return this.- Type Parameters:
U
- The new value type.- Parameters:
mapper
- The function to flatmap the contained value into a new result. Must not benull
. The function must return a non-null
result.- Returns:
- The flatmapped result if this is an
Ok
value. Otherwise this.
-
recover
Result<V,E> recover(FunctionWithException<? super E,? extends V> recover)
Recover the contained error if this is anErr
value. Otherwise return this.- Parameters:
recover
- The function to recover the contained error into a new value. Must not benull
. The function must return a non-null
value.- Returns:
- A result containing the new value if this is an
Err
value. Otherwise this.
-
accept
void accept(ConsumerWithException<? super V> ok, ConsumerWithException<? super E> err)
Terminal function that processes the result or the error- Parameters:
ok
- the consumer called when okerr
- the consumer called when not ok
-
-