| package org.checkerframework.checker.units.qual; |
| |
| import java.lang.annotation.Documented; |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| |
| /** |
| * Specify the class that knows how to handle the meta-annotated unit when put in relation (plus, |
| * multiply, ...) with another unit. That class is a subtype of interface {@link |
| * org.checkerframework.checker.units.UnitsRelations}. |
| * |
| * @see org.checkerframework.checker.units.UnitsRelations |
| * @checker_framework.manual #units-checker Units Checker |
| */ |
| @Documented |
| @Retention(RetentionPolicy.RUNTIME) |
| public @interface UnitsRelations { |
| /** |
| * Returns the subclass of {@link org.checkerframework.checker.units.UnitsRelations} to use. |
| * |
| * @return the subclass of {@link org.checkerframework.checker.units.UnitsRelations} to use |
| */ |
| // The more precise type is Class<? extends org.checkerframework.checker.units.UnitsRelations>, |
| // but org.checkerframework.checker.units.UnitsRelations is not in checker-qual.jar, nor can |
| // it be since it uses AnnotatedTypeMirrors. So this declaration uses a less precise type, and |
| // UnitsAnnotatedTypeFactory checks that the argument implements |
| // org.checkerframework.checker.units.UnitsRelations. |
| Class<?> value(); |
| } |