我可以为自定义注释创建构造函数吗?

时间:2018-03-23 03:00:05

标签: java annotations

我正在尝试为不同的方法和类创建一个注释,以编程方式跟踪所有规则,因此我可以将它们显示给用户。

我希望注释类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 个答案:

没有答案