public abstract class Measure<V,Q extends Quantity> extends java.lang.Object implements Measurable<Q>, java.io.Serializable
This class represents the result of a measurement stated in a known unit.
There is no constraint upon the measurement value itself: scalars,
vectors, or even data sets are valid values as long as
an aggregate magnitude can be determined (see Measurable
).
Modifier and Type | Method and Description |
---|---|
int |
compareTo(Measurable<Q> that)
Compares this measure to the specified measurable quantity.
|
abstract double |
doubleValue(Unit<Q> unit)
Returns the value of this measure stated in the specified unit as
a
double . |
boolean |
equals(java.lang.Object obj)
Compares this measure against the specified object for
strict equality (same unit and amount).
|
float |
floatValue(Unit<Q> unit)
Returns the value of this measure stated in the specified unit as a
float . |
abstract Unit<Q> |
getUnit()
Returns the measurement unit of this measure.
|
abstract V |
getValue()
Returns the measurement value of this measure.
|
int |
hashCode()
Returns the hash code for this scalar.
|
int |
intValue(Unit<Q> unit)
Returns the estimated integral value of this measure stated in
the specified unit as a
int . |
long |
longValue(Unit<Q> unit)
Returns the estimated integral value of this measure stated in
the specified unit as a
long . |
abstract Measure<V,Q> |
to(Unit<Q> unit)
Returns the measure equivalent to this measure but stated in the
specified unit.
|
java.lang.String |
toString()
Returns the
String representation of this measure
The string produced for a given measure is always the same;
it is not affected by locale. |
static <Q extends Quantity> |
valueOf(java.math.BigDecimal decimal,
Unit<Q> unit)
Deprecated.
DecimalMeasure should be used directly. |
static <Q extends Quantity> |
valueOf(java.math.BigDecimal decimal,
Unit<Q> unit,
java.math.MathContext mathContext)
Deprecated.
DecimalMeasure should be used directly and
MathContext specified explicitly when
converting . |
static <Q extends Quantity> |
valueOf(double[] components,
Unit<Q> unit)
Deprecated.
VectorMeasure should be used directly. |
static <Q extends Quantity> |
valueOf(double doubleValue,
Unit<Q> unit)
Returns the scalar measure for the specified
double
stated in the specified unit. |
static <Q extends Quantity> |
valueOf(float floatValue,
Unit<Q> unit)
Returns the scalar measure for the specified
float
stated in the specified unit. |
static <Q extends Quantity> |
valueOf(int intValue,
Unit<Q> unit)
Returns the scalar measure for the specified
int
stated in the specified unit. |
static <Q extends Quantity> |
valueOf(long longValue,
Unit<Q> unit)
Returns the scalar measure for the specified
double
stated in the specified unit. |
public static <Q extends Quantity> Measure<java.lang.Double,Q> valueOf(double doubleValue, Unit<Q> unit)
double
stated in the specified unit.doubleValue
- the measurement value.unit
- the measurement unit.public static <Q extends Quantity> Measure<java.lang.Long,Q> valueOf(long longValue, Unit<Q> unit)
double
stated in the specified unit.longValue
- the measurement value.unit
- the measurement unit.public static <Q extends Quantity> Measure<java.lang.Float,Q> valueOf(float floatValue, Unit<Q> unit)
float
stated in the specified unit.floatValue
- the measurement value.unit
- the measurement unit.public static <Q extends Quantity> Measure<java.lang.Integer,Q> valueOf(int intValue, Unit<Q> unit)
int
stated in the specified unit.intValue
- the measurement value.unit
- the measurement unit.public abstract V getValue()
public abstract Unit<Q> getUnit()
public abstract Measure<V,Q> to(Unit<Q> unit)
unit
- the new measurement unit.public abstract double doubleValue(Unit<Q> unit)
double
. If the measure has too great a magnitude to
be represented as a double
, it will be converted to
Double.NEGATIVE_INFINITY
or
Double.POSITIVE_INFINITY
as appropriate.doubleValue
in interface Measurable<Q extends Quantity>
unit
- the unit in which this measure is stated.double
.public long longValue(Unit<Q> unit) throws java.lang.ArithmeticException
long
.
Note: This method differs from the Number.longValue()
in the sense that the closest integer value is returned
and an ArithmeticException is raised instead
of a bit truncation in case of overflow (safety critical).
longValue
in interface Measurable<Q extends Quantity>
unit
- the unit in which the measurable value is stated.long
.java.lang.ArithmeticException
- if this quantity cannot be represented
as a long
number in the specified unit.public float floatValue(Unit<Q> unit)
float
. If the measure has too great a magnitude to be
represented as a float
, it will be converted to
Float.NEGATIVE_INFINITY
or
Float.POSITIVE_INFINITY
as appropriate.unit
- the unit in which the measure is stated.float
.public int intValue(Unit<Q> unit)
int
.
Note: This method differs from the Number.intValue()
in the sense that the closest integer value is returned
and an ArithmeticException is raised instead
of a bit truncation in case of overflow (safety critical).
unit
- the unit in which the measurable value is stated.int
.java.lang.ArithmeticException
- if this quantity cannot be represented
as a int
number in the specified unit.public boolean equals(java.lang.Object obj)
compareTo(javax.measure.Measurable<Q>)
method should be used.equals
in class java.lang.Object
obj
- the object to compare with.true
if both objects are identical (same
unit and same amount); false
otherwise.public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
String
representation of this measure
The string produced for a given measure is always the same;
it is not affected by locale. This means that it can be used
as a canonical string representation for exchanging data,
or as a key for a Hashtable, etc. Locale-sensitive
measure formatting and parsing is handled by the MeasureFormat
class and its subclasses.toString
in class java.lang.Object
public int compareTo(Measurable<Q> that)
Measurable.doubleValue(Unit)
of
both this measure and the specified measurable stated in the
same unit (this measure's unit
).compareTo
in interface java.lang.Comparable<Measurable<Q extends Quantity>>
public static <Q extends Quantity> Measure<java.math.BigDecimal,Q> valueOf(java.math.BigDecimal decimal, Unit<Q> unit)
DecimalMeasure
should be used directly.public static <Q extends Quantity> Measure<java.math.BigDecimal,Q> valueOf(java.math.BigDecimal decimal, Unit<Q> unit, java.math.MathContext mathContext)
DecimalMeasure
should be used directly and
MathContext
specified explicitly when
converting
.public static <Q extends Quantity> Measure<double[],Q> valueOf(double[] components, Unit<Q> unit)
VectorMeasure
should be used directly.