OptionImpl.java
package space.sunqian.common.base.option;
import space.sunqian.annotations.Nonnull;
import space.sunqian.annotations.Nullable;
final class OptionImpl<K, V> implements Option<K, V> {
static final @Nonnull Option<?, ?> @Nonnull [] EMPTY_OPTIONS = new Option<?, ?>[0];
static <K, V> @Nonnull Option<K, V> of(@Nonnull K key, @Nullable V value) {
return new OptionImpl<>(key, value);
}
private final @Nonnull K key;
private final @Nullable V value;
private OptionImpl(@Nonnull K key, @Nullable V value) {
this.key = key;
this.value = value;
}
@Override
public @Nonnull K key() {
return key;
}
@Override
public @Nullable V value() {
return value;
}
}