Annotation Interface 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