Skip to content

Instantly share code, notes, and snippets.

@NetzwergX
Created February 13, 2019 19:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save NetzwergX/ca5e6958aa5244ea0ff781cf3e506eee to your computer and use it in GitHub Desktop.
Save NetzwergX/ca5e6958aa5244ea0ff781cf3e506eee to your computer and use it in GitHub Desktop.
Extension methods for Optional<E> via Manifold
import java.util.Optional;
import java.util.function.Function;
import java.util.function.Supplier;
import manifold.ext.api.Extension;
import manifold.ext.api.This;
/**
* Extends {@link Optional<T>} with two new methods for acquiring values.
*/
@Extension
public class OptionalExt {
public <T, R> R applyOrGet(@This Optional<T> optional, Function<T, R> function, Supplier<R> supplier) {
if (optional.isPresent())
return function.apply(optional.get());
else return supplier.get();
}
public <T, R> R applyOrReturn(@This Optional<T> optional, Function<T, R> function, R value) {
if (optional.isPresent())
return function.apply(optional.get());
else return value;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment