
net.eusashead.parquet.util.Option Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of parquet-utils Show documentation
Show all versions of parquet-utils Show documentation
Parquet is a Java REST framework built on Yoke and Vert.x
The newest version!
package net.eusashead.parquet.util;
public abstract class Option implements Monad {
public static Option some(F f) {
if (f != null) {
return new Some<>(f);
} else {
return none();
}
}
public static Option none() {
return new None<>();
}
public abstract boolean has();
public abstract F get();
public abstract T maybe(T def, Function function);
@Override
public abstract Option bind(Function function);
}
class None extends Option {
@Override
public boolean has() {
return false;
}
@Override
public F get() {
throw new IllegalStateException();
}
@Override
public Option bind(
Function function) {
return new None();
}
@Override
public T maybe(T def,
Function function) {
return def;
}
}
class Some extends Option {
private final F b;
Some(F b) {
this.b = b;
}
@Override
public boolean has() {
return true;
}
@Override
public F get() {
return b;
}
@Override
public Option bind(
Function function) {
return Option.some(function.apply(b));
}
@Override
public T maybe(T def,
Function function) {
return function.apply(b);
}
}