summaryrefslogtreecommitdiffstats
path: root/example.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--example.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/example.java b/example.java
new file mode 100644
index 0000000..f3d8858
--- /dev/null
+++ b/example.java
@@ -0,0 +1,45 @@
+import java.util.Optional;
+
+class Example {
+ public static void main(String[] args) {
+ /* should print Hi */
+ Optional<String> a = Optional.of("Hi");
+ System.out.println(StOptional.reduce(a));
+
+ /* should print null */
+ Optional<String> b = Optional.empty();
+ System.out.println(StOptional.reduce(b));
+
+ /* should print null */
+ Optional<String> c = null;
+ System.out.println(StOptional.reduce(c));
+ }
+}
+
+/**
+ * Stop Optionals from being used!
+ * safely reducing optionals back to their original types.
+ */
+final class StOptional {
+ /**
+ * Reduce any optional down to it's original type
+ *
+ * @param o Optional<?> to reduce
+ * @return <?> value of optional
+ */
+ public static final <T> T reduce(Optional<T> o) {
+ return nullish(o) ? null : o.get();
+ }
+
+ /**
+ * Checks if Optional<?> is null or empty
+ *
+ * @param o Optional<?>
+ * @return boolean true if null or empty, false otherwise
+ */
+ public static final boolean nullish(Optional<?> o) {
+ if (o == null || o.isEmpty())
+ return true;
+ return false;
+ }
+}