diff options
Diffstat (limited to 'bt/src/main/java/io/trygvis/android/Optional.java')
-rw-r--r-- | bt/src/main/java/io/trygvis/android/Optional.java | 45 |
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(); + } +} |