Class UnitConverter

java.lang.Object
javax.measure.converter.UnitConverter
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
AddConverter, LogConverter, MultiplyConverter, RationalConverter

public abstract class UnitConverter extends Object implements Serializable

This class represents a converter of numeric values.

It is not required for sub-classes to be immutable (e.g. currency converter).

Sub-classes must ensure unicity of the identity converter. In other words, if the result of an operation is equivalent to the identity converter, then the unique IDENTITY instance should be returned.

See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final UnitConverter
    Holds the identity converter (unique).
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Default constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    Concatenates this converter with another converter.
    abstract double
    convert(double x)
    Converts a double value.
    boolean
    equals(Object cvtr)
    Indicates whether this converter is considered the same as the converter specified.
    int
    Returns a hash code value for this converter.
    abstract UnitConverter
    Returns the inverse of this converter.
    abstract boolean
    Indicates if this converter is linear.

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • IDENTITY

      public static final UnitConverter IDENTITY
      Holds the identity converter (unique). This converter does nothing (ONE.convert(x) == x).
  • Constructor Details

    • UnitConverter

      protected UnitConverter()
      Default constructor.
  • Method Details

    • inverse

      public abstract UnitConverter inverse()
      Returns the inverse of this converter. If x is a valid value, then x == inverse().convert(convert(x)) to within the accuracy of computer arithmetic.
      Returns:
      the inverse of this converter.
    • convert

      public abstract double convert(double x) throws ConversionException
      Converts a double value.
      Parameters:
      x - the numeric value to convert.
      Returns:
      the converted numeric value.
      Throws:
      ConversionException - if an error occurs during conversion.
    • isLinear

      public abstract boolean isLinear()
      Indicates if this converter is linear. A converter is linear if convert(u + v) == convert(u) + convert(v) and convert(r * u) == r * convert(u). For linear converters the following property always hold:[code] y1 = c1.convert(x1); y2 = c2.convert(x2); then y1*y2 = c1.concatenate(c2).convert(x1*x2)[/code]
      Returns:
      true if this converter is linear; false otherwise.
    • equals

      public boolean equals(Object cvtr)
      Indicates whether this converter is considered the same as the converter specified. To be considered equal this converter concatenated with the one specified must returns the IDENTITY.
      Overrides:
      equals in class Object
      Parameters:
      cvtr - the converter with which to compare.
      Returns:
      true if the specified object is a converter considered equals to this converter;false otherwise.
    • hashCode

      public int hashCode()
      Returns a hash code value for this converter. Equals object have equal hash codes.
      Overrides:
      hashCode in class Object
      Returns:
      this converter hash code value.
      See Also:
    • concatenate

      public UnitConverter concatenate(UnitConverter converter)
      Concatenates this converter with another converter. The resulting converter is equivalent to first converting by the specified converter, and then converting by this converter.

      Note: Implementations must ensure that the IDENTITY instance is returned if the resulting converter is an identity converter.

      Parameters:
      converter - the other converter.
      Returns:
      the concatenation of this converter with the other converter.