Package javax.measure.converter
Class UnitConverter
java.lang.Object
javax.measure.converter.UnitConverter
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
AddConverter
,LogConverter
,MultiplyConverter
,RationalConverter
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
Modifier and TypeFieldDescriptionstatic final UnitConverter
Holds the identity converter (unique). -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionconcatenate
(UnitConverter converter) Concatenates this converter with another converter.abstract double
convert
(double x) Converts a double value.boolean
Indicates whether this converter is considered the same as the converter specified.int
hashCode()
Returns a hash code value for this converter.abstract UnitConverter
inverse()
Returns the inverse of this converter.abstract boolean
isLinear()
Indicates if this converter is linear.
-
Field Details
-
IDENTITY
Holds the identity converter (unique). This converter does nothing (ONE.convert(x) == x
).
-
-
Constructor Details
-
UnitConverter
protected UnitConverter()Default constructor.
-
-
Method Details
-
inverse
Returns the inverse of this converter. Ifx
is a valid value, thenx == inverse().convert(convert(x))
to within the accuracy of computer arithmetic.- Returns:
- the inverse of this converter.
-
convert
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 ifconvert(u + v) == convert(u) + convert(v)
andconvert(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
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 theIDENTITY
. -
hashCode
public int hashCode()Returns a hash code value for this converter. Equals object have equal hash codes. -
concatenate
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.
-