JSR-275 - Measurements and Units Specification

Package javax.measure.unit

Provides support for programatic unit handling.

See:
          Description

Interface Summary
Dimension.Model This interface represents the mapping between base units and dimensions.
 

Class Summary
AlternateUnit<Q extends Quantity> This class represents the units used in expressions to distinguish between quantities of a different nature but of the same dimensions.
BaseUnit<Q extends Quantity> This class represents the building blocks on top of which all others units are created.
CompoundUnit<Q extends Quantity> This class represents the multi-radix units (such as "hour:min:sec").
DerivedUnit<Q extends Quantity> This class identifies the units created by combining or transforming other units.
Dimension This class represents the dimension of an unit.
NonSI This class contains units that are not part of the International System of Units, that is, they are outside the SI, but are important and widely used.
ProductUnit<Q extends Quantity> This class represents units formed by the product of rational powers of existing units.
SI This class contains SI (Système International d'Unités) base units, and derived units.
TransformedUnit<Q extends Quantity> This class represents the units derived from other units using converters.
Unit<Q extends Quantity> This class represents a determinate quantity (as of length, time, heat, or value) adopted as a standard of measurement.
UnitFormat This class provides the interface for formatting and parsing units.
 

Package javax.measure.unit Description

Provides support for programatic unit handling.

Standart/NonStandard Units

Standard units and prefixes are provided by the SI class (Système International d'Unités) and about 50 non-standard units are available through the NonSI class.

Usage examples:

    
import javax.measure.Measurable;
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(METER).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]²

Unit Parameterization

Units are parameterized (<Q extends Quantity>) to enforce compile-time checks of units/measures consistency, for example:

    Unit<Duration> MINUTE = SECONDS.times(60); // Ok.
    Unit<Duration> MINUTE = METER.times(60); // Compile error.
    
    Unit<Pressure> HECTOPASCAL = HECTO(PASCAL); // Ok.
    Unit<Pressure> HECTOPASCAL = HECTO(NEWTON); // Compile error.
    
    Measurable<Duration> duration = Measure.valueOf(2, MINUTE); // Ok.
    Measurable<Duration> duration = Measure.valueOf(2, CELSIUS); // Compile error.
    
    long milliseconds = duration.longValue(MILLI(SECOND)); // Ok.
    long milliseconds = duration.longValue(POUND); // Compile error.
    

UML Diagram

UML Diagram


JSR-275 - Measurements and Units Specification

Copyright © 2007 JSR-275