package com.googlecode.totallylazy.numbers; import com.googlecode.totallylazy.Value; public class Num extends Number implements Value<Number> { private final Number value; protected Num(Number value) { this.value = value; } public static Num num(Number number) {return new Num(number);} public Number value() { return value; } @Override public int intValue() { return value.intValue(); } @Override public long longValue() { return value.longValue(); } @Override public float floatValue() { return value.floatValue(); } @Override public double doubleValue() { return value.doubleValue(); } @Override public byte byteValue() { return value.byteValue(); } @Override public short shortValue() { return value.shortValue(); } @Override public int hashCode() { return value.hashCode(); } @Override public boolean equals(Object obj) { return value.equals(obj); } @Override public String toString() { return value.toString(); } public Num add(Number other) { return num(Numbers.add(value, other)); } public Num subtract(Number other) { return num(Numbers.subtract(value, other)); } public Num multiply(Number other) { return num(Numbers.multiply(value, other)); } public Num divide(Number other) { return num(Numbers.divide(value, other)); } public boolean isZero() { return Numbers.isZero(value); } }