如何注释 java 包并反映元数据
How to annotate java package and reflect metadata
我想使用简单注释来注释 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
为了能够在包上放置注释,您应该创建 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)
我想使用简单注释来注释 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
为了能够在包上放置注释,您应该创建 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)