aboutsummaryrefslogtreecommitdiff
path: root/bt/src/main/java/io/trygvis/android/Optional.java
diff options
context:
space:
mode:
Diffstat (limited to 'bt/src/main/java/io/trygvis/android/Optional.java')
-rw-r--r--bt/src/main/java/io/trygvis/android/Optional.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/bt/src/main/java/io/trygvis/android/Optional.java b/bt/src/main/java/io/trygvis/android/Optional.java
new file mode 100644
index 0000000..616f9a7
--- /dev/null
+++ b/bt/src/main/java/io/trygvis/android/Optional.java
@@ -0,0 +1,45 @@
+package io.trygvis.android;
+
+public final class Optional<T> {
+ private final T value;
+
+ public Optional(T value) {
+ this.value = value;
+ }
+
+ public T get() {
+ if (value == null) {
+ throw new IllegalStateException("get() on empty");
+ }
+
+ return value;
+ }
+
+ public boolean isPresent() {
+ return value != null;
+ }
+
+ public void ifPresent(Consumer<T> consumer) {
+ if (value == null) {
+ return;
+ }
+
+ consumer.accept(value);
+ }
+
+ public static <T> Optional<T> of(T t) {
+ if (t == null) {
+ throw new IllegalArgumentException("t can't be null");
+ }
+
+ return new Optional<>(t);
+ }
+
+ public static <T> Optional<T> empty() {
+ return new Optional<>(null);
+ }
+
+ public static <T> Optional<T> ofNullable(T t) {
+ return t != null ? of(t) : empty();
+ }
+}