Annotation Type PolyUnit
-
@Documented @Retention(RUNTIME) @Target({TYPE_USE,TYPE_PARAMETER}) @PolymorphicQualifier(UnknownUnits.class) public @interface PolyUnit
A polymorphic qualifier for the units-of-measure type system implemented by the Units Checker.Any method written using @PolyUnit conceptually has many versions: in each one, every instance of @PolyUnit has been replaced by a different unit qualifier such as @kg (kilograms) or @h (hours).
The following example shows how method
triplePolyUnit
can be used to process either meters or seconds:@PolyUnit int triplePolyUnit(@PolyUnit int amount) { return 3*amount; } void testPolyUnit() { @m int m1 = 7 * UnitsTools.m; @m int m2 = triplePolyUnit(m1); @s int sec1 = 7 * UnitsTools.s; @s int sec2 = triplePolyUnit(sec1); // :: error: (assignment.type.incompatible) @s int sec3 = triplePolyUnit(m1); }
- See the Checker Framework Manual:
- Units Checker, Qualifier polymorphism