Optional.java
AKL City ยท akl-city.git
Branches > main > d6131a1 > files / src / main / java / dev / grahp / option / Optional.java
package dev.grahp.option;
import java.lang.RuntimeException;
// Make IBox and make this Box to avoid name collision
public class Optional<T> implements Box {
private final T value;
public final boolean present;
public Optional() {
present = false;
value = null;
}
public Optional(T value) {
this.value = value;
present = true;
}
@Override
public T val() {
if (present) {
return value;
} else {
throw new RuntimeException("Tried to unbox an empty box!");
}
}
// public R with(Function<T, R> f) {
// if (present) {
// return f.apply(value);
// }
// }
@Override
public String toString() {
return present ? "Optional[" + value.toString() + "]"
: "Optional[]";
}
}