Package aQute.bnd.result
Interface Result<V>
- Type Parameters:
V
- The value type of the Result.
public interface Result<V>
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 Result where V is the original return type,
i.e. the "happy case" and String is the error type.
Example:
Instead of adding a throws declaration to a function, the return type of the function is instead set to Result
Example:
public Resultdivide(int a, int b) { if (b == 0) { return Result.err("Can't divide by zero!"); } else { return Result.ok(a / b); } }
-
Method Summary
Modifier and TypeMethodDescriptionvoid
accept
(ConsumerWithException<? super V> ok, ConsumerWithException<? super String> err) Processes the result.<U> Result<U>
asError()
If anErr
, return this coerced to the desired generic type.static <V> Result<V>
err
(CharSequence error) Returns anErr
containing the specifiederror
.static <V> Result<V>
error()
Returns the error of this instance as anOptional
.<U> Result<U>
flatMap
(FunctionWithException<? super V, ? extends Result<? extends U>> mapper) FlatMap the contained value if this is anOk
value.boolean
isErr()
boolean
isOk()
<U> Result<U>
map
(FunctionWithException<? super V, ? extends U> mapper) Map the contained value if this is anOk
value.mapErr
(FunctionWithException<? super String, ? extends CharSequence> mapper) Map the contained error if this is anErr
value.static <V> Result<V>
of
(V value, CharSequence error) static <V> Result<V>
ok
(V value) Returns anOk
containing the specifiedvalue
.Returns the contained value if this is anOk
value.orElseGet
(SupplierWithException<? extends V> orElseSupplier) Returns the contained value if this is anOk
value.orElseThrow
(FunctionWithException<? super String, ? extends R> throwableSupplier) Returns the contained value if this is anOk
value.recover
(FunctionWithException<? super String, ? extends V> recover) Recover the contained error if this is anErr
value.recoverWith
(FunctionWithException<? super String, ? extends Result<? extends V>> recover) Recover the contained error if this is anErr
value.unwrap()
Returns the contained value if this is anOk
value.unwrap
(CharSequence message) Express the expectation that this object is anOk
value.value()
Returns the value of this instance as anOptional
.
-
Method Details
-
of
-
ok
Returns anOk
containing the specifiedvalue
. -
err
Returns anErr
containing the specifiederror
. -
err
-
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
-
error
-
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
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. Must not benull
.- Throws:
ResultException
- If this is anErr
instance.
-
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
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 Throwable> V orElseThrow(FunctionWithException<? super String, ? extends R> throwableSupplier) throws RReturns the contained value if this is anOk
value. Otherwise throws the exception supplied by the specified function.- Type Parameters:
R
- The exception type.- Parameters:
throwableSupplier
- The supplier to supply an exception if this is anErr
instance. Must not benull
. The supplier must return a non-null
result.- Returns:
- The contained value.
- Throws:
R
- The exception returned by the throwableSupplier if this is anErr
instance.
-
map
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
.- Returns:
- A result containing the mapped value if this is an
Ok
value. Otherwise this.
-
mapErr
Map the contained error if this is anErr
value. Otherwise return this.- 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
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
Recover the contained error if this is anErr
value. Otherwise return this.To recover with a recovery value of
null
, therecoverWith(FunctionWithException)
method must be used. The specified function forrecoverWith(FunctionWithException)
can returnResult.ok(null)
to supply the desirednull
value. -
recoverWith
Recover the contained error if this is anErr
value. Otherwise return this.- Parameters:
recover
- The function to recover the contained error into a new result. Must not benull
. The function must return a non-null
value.- Returns:
- A result if this is an
Err
value. Otherwise this.
-
accept
Processes the result. -
asError
If anErr
, return this coerced to the desired generic type.- Type Parameters:
U
- The desired generic type of theErr
.- Returns:
- this
- Throws:
ResultException
- If this is anOk
instance.
-