Revisions for untitled paste

View the changes made to this paste.

unlisted ⁨1⁩ ⁨file⁩ 2019-10-08 07:49:47 UTC

NullHelper.java

@@ -0,0 +1,61 @@

+package ysl.utils;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.function.Supplier;
+
+public class NullHelper {
+
+    /**
+     * Transforms the provided value if it is not null.
+     *
+     * @param value the value to transform
+     * @param transform the transformation to apply
+     * @param <T> the type of the provided value
+     * @param <R> the return type of the transformation
+     * @return the transformed value or null if the provided value was null
+     */
+    public static <T, R> R nullSafeGet(T value, Function<T, R> transform) {
+        if (value == null) {
+            return null;
+        }
+        return transform.apply(value);
+    }
+
+    /**
+     * Transforms the provided value if it is not null or computes a default value.
+     *
+     * @param value the original value to transform
+     * @param transform the transformation to apply if the provided value is not null
+     * @param supplier the function to compute a default value if the provided one is null
+     * @param <T> the type of the provided value
+     * @param <R> the type of the returned value
+     */
+    public static <T, R> R nullSafeGetOr(T value, Function<T, R> transform, Supplier<R> supplier) {
+        if (value == null) {
+            return supplier.get();
+        }
+        return transform.apply(value);
+    }
+
+    /**
+     * Returns the first non-null value from the provided arguments.
+     *
+     * @throws NullPointerException if there is no non-null value to return
+     */
+    @SafeVarargs
+    public static <T> T or(T t, Supplier<? extends T>... suppliers) {
+        if (t != null) {
+            return t;
+        }
+
+        for (Supplier<? extends T> supplier : suppliers) {
+            T t1 = supplier.get();
+            if (t1 != null) {
+                return t1;
+            }
+        }
+
+        throw new NullPointerException();
+    }
+}
\ No newline at end of file