Default nullable implementation
This commit is contained in:
parent
c3564e049b
commit
3878fac9f5
@ -7,12 +7,14 @@ public interface NativeNullable<T> {
|
|||||||
|
|
||||||
boolean isEmpty();
|
boolean isEmpty();
|
||||||
|
|
||||||
boolean isPresent();
|
default boolean isPresent() {
|
||||||
|
return !isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
T orElse(@NotNull T defaultValue);
|
T orElse(@NotNull T defaultValue);
|
||||||
|
|
||||||
@NotNull NativeNullable<T> or(@NotNull NativeNullable<? extends T> fallback);
|
@NotNull NativeNullable<? extends T> or(@NotNull NativeNullable<? extends T> fallback);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
T getNullable();
|
T getNullable();
|
||||||
|
@ -1,9 +1,53 @@
|
|||||||
package it.cavallium.data.generator;
|
package it.cavallium.data.generator;
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
public interface TypedNullable<T> extends NativeNullable<T> {
|
public interface TypedNullable<T> extends NativeNullable<T> {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
T get() throws NullPointerException;
|
default T get() throws NullPointerException {
|
||||||
|
var value = getNullable();
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default @Nullable T getNullable(@Nullable T defaultValue) {
|
||||||
|
var value = getNullable();
|
||||||
|
return value == null ? defaultValue : value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default @NotNull T orElse(@NotNull T defaultValue) {
|
||||||
|
var value = getNullable();
|
||||||
|
if (value == null) {
|
||||||
|
throw new NullPointerException();
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default @NotNull NativeNullable<? extends T> or(@NotNull NativeNullable<? extends T> fallback) {
|
||||||
|
var value = getNullable();
|
||||||
|
if (value == null) {
|
||||||
|
return fallback;
|
||||||
|
} else {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean isPresent() {
|
||||||
|
return getNullable() != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default boolean isEmpty() {
|
||||||
|
return getNullable() == null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user