Class TransformedUnit<Q extends javax.measure.Quantity<Q>>

  • Type Parameters:
    Q - The type of the quantity measured by this unit.
    All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<javax.measure.Unit<Q>>, javax.measure.Unit<Q>, ComparableUnit<Q>, tech.uom.lib.common.function.UnitConverterSupplier

    public final class TransformedUnit<Q extends javax.measure.Quantity<Q>>
    extends AbstractUnit<Q>
    implements tech.uom.lib.common.function.UnitConverterSupplier

    This class represents the units derived from other units using converters.

    Examples of transformed units: CELSIUS = KELVIN.shift(273.15); FOOT = METRE.multiply(3048).divide(10000); MILLISECOND = MILLI(SECOND);

    Transformed units have no symbol. But like any other units, they may have labels attached to them (see UnitFormat.label

    Instances of this class are created through the AbstractUnit.transform(javax.measure.UnitConverter) method.

    Since:
    1.0
    Version:
    1.2, August 06, 2017
    See Also:
    Serialized Form
    • Field Detail

      • parentUnit

        private final AbstractUnit<Q extends javax.measure.Quantity<Q>> parentUnit
        Holds the parent unit.
      • systemUnit

        private final javax.measure.Unit<Q extends javax.measure.Quantity<Q>> systemUnit
        Holds the system unit.
      • converter

        private final javax.measure.UnitConverter converter
        Holds the converter to the parent unit.
      • symbol

        private java.lang.String symbol
        Holds the symbol.
    • Constructor Detail

      • TransformedUnit

        public TransformedUnit​(javax.measure.Unit<Q> parentUnit,
                               javax.measure.UnitConverter unitConverter)
        Creates a transformed unit from the specified system unit. using the parent as symbol
        Parameters:
        parentUnit - the system unit from which this unit is derived.
        converter - the converter to the parent units.
      • TransformedUnit

        public TransformedUnit​(java.lang.String symbol,
                               javax.measure.Unit<Q> parentUnit,
                               javax.measure.UnitConverter unitConverter)
        Creates a transformed unit from the specified parent unit.
        Parameters:
        symbol - the symbol to use with this transformed unit.
        parentUnit - the parent unit from which this unit is derived.
        unitConverter - the converter to the parent units.
      • TransformedUnit

        public TransformedUnit​(java.lang.String symbol,
                               javax.measure.Unit<Q> parentUnit,
                               javax.measure.Unit<Q> sysUnit,
                               javax.measure.UnitConverter unitConverter)
        Creates a transformed unit from the specified parent and system unit. using the parent as symbol
        Parameters:
        parentUnit - the parent unit from which this unit is derived.
        sysUnit - the system unit which this unit is based on.
        converter - the converter to the parent units.
    • Method Detail

      • getDimension

        public javax.measure.Dimension getDimension()
        Specified by:
        getDimension in interface javax.measure.Unit<Q extends javax.measure.Quantity<Q>>
        Specified by:
        getDimension in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
      • getSystemConverter

        public javax.measure.UnitConverter getSystemConverter()
        Description copied from class: AbstractUnit
        Returns the converter from this unit to its unscaled System Unit unit.
        Specified by:
        getSystemConverter in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
        Returns:
        getConverterTo(this.toSystemUnit())
        See Also:
        AbstractUnit.toSystemUnit()
      • getConverter

        public javax.measure.UnitConverter getConverter()
        Returns the converter to the parent unit.
        Specified by:
        getConverter in interface tech.uom.lib.common.function.UnitConverterSupplier
        Returns:
        the converter to the parent unit.
      • toSystemUnit

        protected javax.measure.Unit<Q> toSystemUnit()
        Description copied from class: AbstractUnit
        Returns the unscaled SI unit from which this unit is derived. The SI unit can be be used to identify a quantity given the unit. For example: static boolean isAngularVelocity(AbstractUnit unit) { return unit.toSystemUnit().equals(RADIAN.divide(SECOND)); } assert(REVOLUTION.divide(MINUTE).isAngularVelocity()); // Returns true.
        Specified by:
        toSystemUnit in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
        Returns:
        the unscaled metric unit from which this unit is derived.
      • getBaseUnits

        public java.util.Map<? extends javax.measure.Unit<?>,​java.lang.Integer> getBaseUnits()
        Specified by:
        getBaseUnits in interface javax.measure.Unit<Q extends javax.measure.Quantity<Q>>
        Specified by:
        getBaseUnits in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
      • getSymbol

        public java.lang.String getSymbol()
        Specified by:
        getSymbol in interface javax.measure.Unit<Q extends javax.measure.Quantity<Q>>
        Overrides:
        getSymbol in class AbstractUnit<Q extends javax.measure.Quantity<Q>>
      • getParentUnit

        public javax.measure.Unit<Q> getParentUnit()
        Returns the parent unit for this unit. The parent unit is the untransformed unit from which this unit is derived.
        Returns:
        the untransformed unit from which this unit is derived.