import com.google.common.annotations.Beta;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
/**
*/
@Beta
public final class OptionalBoolean {
+ private static final @NonNull Optional<Boolean> FALSE_OPTIONAL = Optional.of(Boolean.FALSE);
+ private static final @NonNull Optional<Boolean> TRUE_OPTIONAL = Optional.of(Boolean.TRUE);
+
private static final byte ABSENT = 0;
private static final byte FALSE = 1;
private static final byte TRUE = 2;
}
}
+ /**
+ * Convert an {@link Optional} {@link Boolean} into a field value.
+ *
+ * @param value Optional {@link Boolean}.
+ * @return Field value.
+ * @throws NullPointerException if value is null.
+ */
+ public static byte ofOptional(final Optional<Boolean> value) {
+ return ofNullable(value.orElse(null));
+ }
+
/**
* Convert a field value into an {@link Optional} {@link Boolean}.
*
* @return Optional {@link Boolean}.
* @throws IllegalArgumentException if value is invalid.
*/
- public static Optional<Boolean> toOptional(final byte value) {
+ public static @NonNull Optional<Boolean> toOptional(final byte value) {
switch (value) {
case ABSENT:
return Optional.empty();
case FALSE:
- return Optional.of(Boolean.FALSE);
+ return FALSE_OPTIONAL;
case TRUE:
- return Optional.of(Boolean.TRUE);
+ return TRUE_OPTIONAL;
default:
throw invalidValue(value);
}
* @return Boolean-compatible string, or "absent".
* @throws IllegalArgumentException if value is invalid.
*/
- public static String toString(final byte value) {
+ public static @NonNull String toString(final byte value) {
switch (value) {
case ABSENT:
return "absent";