javax.measure.unit
Class AnnotatedUnit<Q extends Quantity>

java.lang.Object
  extended by javax.measure.unit.Unit<Q>
      extended by javax.measure.unit.DerivedUnit<Q>
          extended by javax.measure.unit.AnnotatedUnit<Q>
All Implemented Interfaces:
java.io.Serializable

public class AnnotatedUnit<Q extends Quantity>
extends DerivedUnit<Q>

This class represents an annotated unit. It allows for unit specialization and annotation without changing the unit semantic. For example:

        public class Size extends Measurable<Length> {
             private double meters;
             ...
             public static class Unit extends AnnotatedUnit<Length> {
                  private Unit(javax.measure.unit.Unit<Length> realUnit, String annotation) {
                      super(realUnit, annotation);
                  }
                  public static Size.Unit METER = new Size.Unit(SI.METER, "SIZE"); // Equivalent to SI.METER
                  public static Size.Unit INCH = new Size.Unit(NonSI.INCH, "SIZE"); // Equivalent to NonSI.INCH
             }
        }

Annotation are often written between curly braces behind units but they do not change, for example "%{vol}", "kg{total}", or "{RBC}" (for "red blood cells") are equivalent to "%", "kg", and "1" respectively.

Version:
1.0, April 15, 2009
Author:
Jean-Marie Dautelle
See Also:
Serialized Form

Field Summary
 
Fields inherited from class javax.measure.unit.Unit
ONE
 
Constructor Summary
AnnotatedUnit(Unit<Q> realUnit, java.lang.String annotation)
          Creates an annotated unit for the specified unit.
 
Method Summary
 boolean equals(java.lang.Object that)
          Indicates if the specified unit can be considered equals to the one specified.
 java.lang.String getAnnotation()
          Returns the annotation of this unit.
 UnitConverter getConverterTo(Unit<Q> unit)
          Returns a converter of numeric values from this unit to another unit.
 Unit<Q> getRealUnit()
          Returns the equivalent non-annotated unit.
 int hashCode()
          Returns the hash code for this unit.
 Unit<Q> toSI()
          Returns the standard unit from which this unit is derived.
 
Methods inherited from class javax.measure.unit.Unit
alternate, asType, compound, divide, divide, divide, getDimension, inverse, isCompatible, isSI, plus, pow, root, times, times, times, toString, transform, valueOf
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AnnotatedUnit

public AnnotatedUnit(Unit<Q> realUnit,
                     java.lang.String annotation)
Creates an annotated unit for the specified unit.

Parameters:
realUnit - the real unit.
annotation - the annotation.
Method Detail

getAnnotation

public java.lang.String getAnnotation()
Returns the annotation of this unit.

Returns:
the annotation of this unit.

getRealUnit

public final Unit<Q> getRealUnit()
Returns the equivalent non-annotated unit.

Returns:
the real unit.

toSI

public final Unit<Q> toSI()
Description copied from class: Unit
Returns the standard unit from which this unit is derived. The SI unit identifies the "type" of quantity for which this unit is employed. For example:
     boolean isAngularVelocity(Unit<?> u) {
         return u.toSI().equals(RADIAN.divide(SECOND));
     }
     assert(REVOLUTION.divide(MINUTE).isAngularVelocity());
 

Note: Having the same SI unit is not sufficient to ensure that a converter exists between the two units (e.g. °C/m and K/m).

Specified by:
toSI in class Unit<Q extends Quantity>
Returns:
the system unit this unit is derived from.

getConverterTo

public final UnitConverter getConverterTo(Unit<Q> unit)
Description copied from class: Unit
Returns a converter of numeric values from this unit to another unit. As a minimum unit sub-classes should be able to provide a unit converter to their associated standard unit.

Overrides:
getConverterTo in class Unit<Q extends Quantity>
Parameters:
unit - the unit to which to convert the numeric values.
Returns:
the converter from this unit to that unit.

equals

public boolean equals(java.lang.Object that)
Description copied from class: Unit
Indicates if the specified unit can be considered equals to the one specified.

Specified by:
equals in class Unit<Q extends Quantity>
Parameters:
that - the object to compare to.
Returns:
true if this unit is considered equal to that unit; false otherwise.

hashCode

public int hashCode()
Description copied from class: Unit
Returns the hash code for this unit.

Specified by:
hashCode in class Unit<Q extends Quantity>
Returns:
this unit hashcode value.


Copyright © 2009 JScience. All Rights Reserved.