import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.annotations.Beta;
-import com.google.common.annotations.VisibleForTesting;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
-import org.opendaylight.yangtools.concepts.Immutable;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
/**
* Dedicated type for YANG's 'type uint16' type.
* @author Robert Varga
*/
@Beta
-public final class Uint16 extends Number implements Comparable<Uint16>, Immutable {
+@NonNullByDefault
+public class Uint16 extends Number implements CanonicalValue<Uint16> {
+ private static final class Support extends AbstractCanonicalValueSupport<Uint16> {
+ Support() {
+ super(Uint16.class);
+ }
+
+ @Override
+ public Uint16 fromString(final String str) {
+ return Uint16.valueOf(str);
+ }
+ }
+
+ private static final CanonicalValueSupport<Uint16> SUPPORT = new Support();
private static final long serialVersionUID = 1L;
private static final int MIN_VALUE = 0;
private static final int MAX_VALUE = 65535;
private final short value;
- @VisibleForTesting
Uint16(final short value) {
this.value = value;
}
+ protected Uint16(final Uint16 other) {
+ this.value = other.value;
+ }
+
private static Uint16 instanceFor(final short value) {
final int slot = Short.toUnsignedInt(value);
if (slot >= CACHE.length) {
}
@Override
- public short shortValue() {
+ public final short shortValue() {
return value;
}
@Override
- public int intValue() {
+ public final int intValue() {
return Short.toUnsignedInt(value);
}
@Override
- public long longValue() {
+ public final long longValue() {
return Short.toUnsignedLong(value);
}
@Override
- public float floatValue() {
+ public final float floatValue() {
return intValue();
}
@Override
- public double doubleValue() {
+ public final double doubleValue() {
return intValue();
}
@Override
@SuppressWarnings("checkstyle:parameterName")
- public int compareTo(final Uint16 o) {
+ public final int compareTo(final Uint16 o) {
return Integer.compare(intValue(), o.intValue());
}
@Override
- public int hashCode() {
- return Short.hashCode(value);
+ public final String toCanonicalString() {
+ return String.valueOf(intValue());
}
@Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
+ public final CanonicalValueSupport<Uint16> support() {
+ return SUPPORT;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Short.hashCode(value);
+ }
- return obj instanceof Uint16 && value == ((Uint16)obj).value;
+ @Override
+ public final boolean equals(final @Nullable Object obj) {
+ return this == obj || obj instanceof Uint16 && value == ((Uint16)obj).value;
}
@Override
- public String toString() {
- return String.valueOf(intValue());
+ public final String toString() {
+ return toCanonicalString();
}
private Object readResolve() {