<dependency>
<groupId>javax.measure</groupId>
<artifactId>javax.measure-api</artifactId>
<version>1.0</version>
</dependency>
import javax.measure.Unit;
import javax.measure.quantity.Length;
import tec.units.ri.AbstractUnit;
public class NewUnit extends AbstractUnit<Length> implements Unit<Length> {
}
import javax.measure.spi.QuantityFactory;
import javax.measure.Unit;
import javax.measure.quantity.Length;
import org.osgi.service.component.annotations.Component;
import tec.units.ri.format.SimpleUnitFormat;
@Component
public class CustomUnitFactory implements QuantityFactory<Length> {
public static final Unit<Length> NEW_UNIT = AbstractUnit.ONE.alternate("NewUnit");
static {
SimpleUnitFormat.getInstance().label(NEW_UNIT, "New Unit");
}
@Override
public Unit<Length> getSystemUnit() {
return NEW_UNIT;
}
}
import javax.measure.Unit;
import javax.measure.quantity.Length;
import javax.measure.quantity.Time;
import tec.units.ri.quantity.Quantities;
import tec.units.ri.unit.Units;
public class Main {
public static void main(String[] args) {
Unit<Length> newUnit = CustomUnitFactory.NEW_UNIT;
Unit<Time> hour = Units.HOUR;
Quantity<Length> length = Quantities.getQuantity(10, newUnit);
Quantity<Length> kilometer = length.to(Units.KILOMETRE);
Quantity<Length> distance = Quantities.getQuantity(100, kilometer);
Quantity<Time> time = Quantities.getQuantity(2, hour);
Quantity<Speed> speed = distance.divide(time).asType(Speed.class);
}
}