diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-08-30 13:30:38 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-08-30 13:30:38 +0200 |
commit | 479bc340eeaecc2614758a61409ab64d745c51dc (patch) | |
tree | db37422b411825f71d117a34a6eeae02d990801b /vespajlib | |
parent | 2b06022f3ebc63bd211961c83307bbf4f4c286cb (diff) | |
parent | 8f6823544640b1f18450e4c6df1335d9ccc9e496 (diff) |
Merge with master
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java new file mode 100644 index 00000000000..00ff06b8f01 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java @@ -0,0 +1,41 @@ +package com.yahoo.lang; + +import java.util.NoSuchElementException; +import java.util.Optional; + +/** + * An optional which contains a settable value + * + * @author bratseth + */ +public final class SettableOptional<T> { + + private T value = null; + + /** Creates a new empty settable optional */ + public SettableOptional() {} + + /** Creates a new settable optional with the given value */ + public SettableOptional(T value) { this.value = value; } + + public boolean isPresent() { + return value != null; + } + + public T get() { + if (value == null) + throw new NoSuchElementException("No value present"); + return value; + } + + public void set(T value) { + this.value = value; + } + + public Optional<T> asOptional() { + if (value == null) return Optional.empty(); + return Optional.of(value); + } + +} + |