Могу ли я сделать конструктор для пользовательской аннотации?

Я пытаюсь сделать аннотацию для различных методов и классов, чтобы программным образом отслеживать все правила, чтобы я мог отобразить их пользователю.

Я хотел бы класс аннотации Rule записать все места, где используется аннотация. В качестве первого шага я попытался добавить в класс один статический счетчик, вот что Rule аннотация выглядит так:

public @interface Rule {
    static int count = 0;
    String name();
    String description(); //Note the parentheses

    public Rule(String name, String description) {
        count++;

        this.name = name;
        this.description = description;
    }
}

То, как я бы использовал это, выглядит так:

public class Airline {
    private String code;

    @Rule(name = "Formatted Code", description = "e.g. Format 'la' as 'LA'")
    public String codeFormatted() {
        return code.toUpperCase();
    }

    public static void main(String args[]) {
        System.out.println(Rule.count);
    }
}

Без Rule открытый конструктор, компилируется с использованием javac версия 1.8.0_162.

Когда я добавляю открытый конструктор (для увеличения Rule.count), я получаю ошибки компилятора:

javac Rule.java
Rule.java:6: error: <identifier> expected
    public Rule(String name, String description) {
              ^
1 error

Compilation exited abnormally with code 1 at Thu Mar 22 19:58:39

Чего мне не хватает в моем Rule конструктор?

Или это совершенно нелепая идея, и мне должно быть плохо? Не могу сказать, все еще привыкаю к ​​аннотациям.

0 ответов

Другие вопросы по тегам