2

我想使用简单的注释来注释 java 包:

@Target(ElementType.PACKAGE)
public @interface Related {
    int apiVersion() default 0;
}

但是,当我尝试将其添加到任何包时,我遇到了编译错误

Error:(1, 14) java: cannot find symbol
  symbol:   class Related
  location: package com.test.xxx

任何帮助表示赞赏!

编辑

经过一番搜索,我也发现了这种错误

Error:(1, 1) java: package annotations should be in file package-info.java
4

1 回答 1

1

为了能够在包上放置注释,您应该创建package-info.java应该包含包定义的文件,如下所示:

@Related
package tld.some.name;

为了能够反映包,您还需要设置RetentionPolicy.RUNTIME

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PACKAGE)
public @interface Related {
    // stuff...
}

然后你终于可以反映包:

SomeClassInPackage.class.getPackage().getAnnotation(Related.class)

您还可以使用按名称反映包java.lang.Package

Package.getPackage("tld.some.name").getAnnotation(Related.class)
于 2016-08-15T23:18:34.280 回答