package org.tax.datatypes; public abstract class QLNumber<T extends Number> extends QLType implements Comparable<Number>{ T value; public QLNumber(T value) { this.value = value; } public T getValue() { return value; } public abstract QLNumber<? extends Number> add(QLNumber<? extends Number> that); public abstract QLNumber<? extends Number> sub(QLNumber<? extends Number> that); public abstract QLNumber<? extends Number> mul(QLNumber<? extends Number> that); public abstract QLNumber<? extends Number> div(QLNumber<? extends Number> that); @Override public abstract int compareTo(Number o); }