
cn.nukkit.utils.OptionalValue Maven / Gradle / Ivy
package cn.nukkit.utils;
import cn.nukkit.api.PowerNukkitOnly;
import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import javax.annotation.Nullable;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Supplier;
@PowerNukkitXOnly
public final class OptionalValue {
private static final OptionalValue> EMPTY = new OptionalValue<>(null);
@Nullable
private final T value;
OptionalValue(@Nullable T value) {
this.value = value;
}
public static OptionalValue of(T value) {
return new OptionalValue<>(Objects.requireNonNull(value));
}
public static OptionalValue ofNullable(T value) {
return value == null ? (OptionalValue) EMPTY : of(value);
}
public static OptionalValue empty() {
return (OptionalValue) EMPTY;
}
public boolean isPresent() {
return value != null;
}
public void ifPresent(Consumer consumer) {
if (value != null) {
consumer.accept(value);
}
}
public T get() {
return value;
}
public T orElse(T other) {
return value != null ? value : other;
}
@PowerNukkitOnly
@Since("1.4.0.0-PN")
public T orElseGet(Supplier other) {
return value != null ? value : other.get();
}
@PowerNukkitOnly
@Since("1.4.0.0-PN")
public T orElseThrow(Supplier exceptionSupplier) throws X {
if (value != null) {
return value;
} else {
throw exceptionSupplier.get();
}
}
@Override
public String toString() {
return value == null ? "OptionalValue.empty" : "OptionalValue[" + value + "]";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy