Class ProductUnit<Q extends Quantity<Q>>

  • Type Parameters:
    Q - The type of the quantity measured by this unit.
    All Implemented Interfaces:
    Serializable, Comparable<Unit<Q>>, Unit<Q>, tech.uom.lib.common.function.Nameable, tech.uom.lib.common.function.PrefixOperator<Q>, tech.uom.lib.common.function.SymbolSupplier

    public final class ProductUnit<Q extends Quantity<Q>>
    extends AbstractUnit<Q>

    This class represents units formed by the product of rational powers of existing physical units.

    This class maintains the canonical form of this product (simplest form after factorization). For example: METRE.pow(2).divide(METRE) returns METRE.

    Since:
    1.0
    Version:
    2.1, September 30, 2024
    Author:
    Jean-Marie Dautelle, Werner Keil, Andi Huber
    See Also:
    Serialized Form
    • Constructor Detail

      • ProductUnit

        public ProductUnit()
        DefaultQuantityFactory constructor (used solely to create ONE instance).
      • ProductUnit

        public ProductUnit​(Unit<?> productUnit)
        Copy constructor (allows for parameterization of product units).
        Parameters:
        productUnit - the product unit source.
        Throws:
        ClassCastException - if the specified unit is not a product unit.
    • Method Detail

      • ofProduct

        public static Unit<?> ofProduct​(Unit<?> left,
                                        Unit<?> right)
        Returns the product of the specified units.
        Parameters:
        left - the left unit operand.
        right - the right unit operand.
        Returns:
        left * right
      • ofQuotient

        public static Unit<?> ofQuotient​(Unit<?> left,
                                         Unit<?> right)
        Returns the quotient of the specified units.
        Parameters:
        left - the dividend unit operand.
        right - the divisor unit operand.
        Returns:
        dividend / divisor
      • ofRoot

        public static Unit<?> ofRoot​(Unit<?> unit,
                                     int n)
        Returns the product unit corresponding to the specified root of the specified unit.
        Parameters:
        unit - the unit.
        n - the root's order (n > 0).
        Returns:
        unit^(1/nn)
        Throws:
        ArithmeticException - if n == 0.
      • ofPow

        public static Unit<?> ofPow​(Unit<?> unit,
                                    int n)
        Returns the product unit corresponding to this unit raised to the specified exponent.
        Parameters:
        unit - the unit.
        nn - the exponent (nn > 0).
        Returns:
        unit^n
      • pow

        public Unit<?> pow​(int n)
        Description copied from class: AbstractUnit
        Returns a unit equals to this unit raised to an exponent.
        Specified by:
        pow in interface Unit<Q extends Quantity<Q>>
        Overrides:
        pow in class AbstractUnit<Q extends Quantity<Q>>
        Parameters:
        n - the exponent.
        Returns:
        the result of raising this unit to the exponent.
      • getUnitCount

        public int getUnitCount()
        Returns the number of unit elements in this product.
        Returns:
        the number of unit elements.
      • getUnit

        public Unit<?> getUnit​(int index)
        Returns the unit element at the specified position.
        Parameters:
        index - the index of the unit element to return.
        Returns:
        the unit element at the specified position.
        Throws:
        IndexOutOfBoundsException - if index is out of range (index < 0 || index >= getUnitCount()).
      • getUnitPow

        public int getUnitPow​(int index)
        Returns the power exponent of the unit element at the specified position.
        Parameters:
        index - the index of the unit element.
        Returns:
        the unit power exponent at the specified position.
        Throws:
        IndexOutOfBoundsException - if index is out of range (index < 0 || index >= getUnitCount()).
      • getUnitRoot

        public int getUnitRoot​(int index)
        Returns the root exponent of the unit element at the specified position.
        Parameters:
        index - the index of the unit element.
        Returns:
        the unit root exponent at the specified position.
        Throws:
        IndexOutOfBoundsException - if index is out of range (index < 0 || index >= getUnitCount()).
      • toSystemUnit

        public Unit<QtoSystemUnit()
        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 Quantity<Q>>
        Returns:
        the unscaled metric unit from which this unit is derived.