javax.measure.unit |
Provides support for programatic unit handling.
Standart/NonStandard Units
Standard units and prefixes are provided by the
{@link javax.measure.unit.SI SI} class (Système International d'Unités) and
about 50 non-standard units are available through the
{@link javax.measure.unit.NonSI NonSI} class.
Usage examples:
[code]
import javax.measure.Scalar;
import javax.measure.Measure;
import javax.measure.unit.*;
import javax.measure.quantity.*;
import static javax.measure.unit.SI.*;
import static javax.measure.unit.NonSI.*;
import static javax.measure.unit.Dimension.*;
public class Main {
public void main(String[] args) {
// Conversion between units.
System.out.println(KILO(METRE).getConverterTo(MILE).convert(10));
// Retrieval of the system unit (identifies the measurement type).
System.out.println(REVOLUTION.divide(MINUTE).getSystemUnit());
// Dimension checking (allows/disallows conversions)
System.out.println(ELECTRON_VOLT.isCompatible(WATT.times(HOUR)));
// Retrieval of the unit dimension (depends upon the current model).
System.out.println(ELECTRON_VOLT.getDimension());
}
}
> 6.2137119223733395
> rad/s
> true
> [L]²·[M]/[T]²
[/code]
Unit Parameterization
Units are parameterized (<Q extends {@link javax.measure.quantity.Quantity Quantity}>) to
enforce compile-time checks of units/measures consistency, for example:[code]
Unit MINUTE = SECONDS.times(60); // Ok.
Unit MINUTE = METRE.times(60); // Compile error.
Unit HECTOPASCAL = HECTO(PASCAL); // Ok.
Unit HECTOPASCAL = HECTO(NEWTON); // Compile error.
Measurable duration = Measure.valueOf(2, MINUTE); // Ok.
Measurable duration = Measure.valueOf(2, CELSIUS); // Compile error.
long milliseconds = duration.longValue(MILLI(SECOND)); // Ok.
long milliseconds = duration.longValue(POUND); // Compile error.
[/code]
UML Diagram
|
Java Source File Name | Type | Comment |
AlternateUnit.java | Class | |
BaseUnit.java | Class | This class represents the building blocks on top of which all others
units are created. |
CompoundUnit.java | Class | This class represents the multi-radix units (such as "hour:min:sec"). |
DerivedUnit.java | Class | |
Dimension.java | Class | This class represents the dimension of an unit. |
NonSI.java | Class | |
ProductUnit.java | Class | This class represents units formed by the product of rational powers of
existing units.
This class maintains the canonical form of this product (simplest
form after factorization). |
SI.java | Class | This class contains SI (Système International d'Unités) base units,
and derived units.
It also defines the 20 SI prefixes used to form decimal multiples and
submultiples of SI units. |
SystemOfUnits.java | Class | This class represents a system of units, it groups units together
for historical or cultural reasons. |
TransformedUnit.java | Class | This class represents the units derived from other units using
UnitConverter converters .
Examples of transformed units:[code]
CELSIUS = KELVIN.add(273.15);
FOOT = METER.multiply(0.3048);
MILLISECOND = MILLI(SECOND);
[/code]
Transformed units have no label. |
Unit.java | Class | This class represents a determinate
javax.measure.quantity.Quantityquantity (as of length, time, heat, or value) adopted as a standard
of measurement.
It is helpful to think of instances of this class as recording the
history by which they are created. |
UnitFormat.java | Class | This class provides the interface for formatting and parsing
Unit units .
For all
SI units, the 20 SI prefixes used to form decimal
multiples and sub-multiples of SI units are recognized.
NonSI units are directly recognized. |