Нечто подобное должно обнаруживаться.
Код: Выделить всё
public void startSomethingElse(@AccountIdParam long accountId, @BalanceParam long balance) {
System.out.println("Account " + accountId + " balance " + balance);
}
public void startOfSomething() {
@AccountIdParam long accountId = 1;
@BalanceParam long balance = 100;
startSomethingElse(balance, accountId);
}
Код: Выделить всё
@SubtypeOf({})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface AccountIdParam {}
@SubtypeOf({})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface BalanceParam {}
Код: Выделить всё
@SubtypeOf({Unqualified.class})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface AccountIdParam {}
@SubtypeOf({Unqualified.class})
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
public @interface BalanceParam {}
@DefaultQualifierInHierarchy
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@SubtypeOf({})
public @interface Unqualified {}
Пара ограничений:
- Мне нужно использовать примитивы, поэтому создание подклассов объектов Java не является вариантом.
- Мне нужна проверка во время компиляции, а не во время выполнения.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ble-parame
Мобильная версия