package it.cavallium.data.generator; public class Nullable { private static final long serialVersionUID = 1L; private static final Nullable NULL = new Nullable<>(null); private final T value; public Nullable(T value) { this.value = value; } public static Nullable of(T value) { if (value == null) { throw new NullPointerException(); } else { return new Nullable<>(value); } } @SuppressWarnings("unchecked") public static Nullable ofNullable(T value) { if (value == null) { return (Nullable) NULL; } else { return new Nullable<>(value); } } @SuppressWarnings("unchecked") public static Nullable empty() { return (Nullable) NULL; } public boolean isEmpty() { return value == null; } public boolean isPresent() { return value != null; } @org.jetbrains.annotations.NotNull public T get() { if (value == null) { throw new NullPointerException(); } else { return value; } } @org.jetbrains.annotations.Nullable public T getNullable() { return value; } }