【问题标题】:How to annotate java package and reflect metadata如何注释java包并反映元数据
【发布时间】:2016-12-22 04:55:16
【问题描述】:

我想用简单的注解来注解 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

【问题讨论】:

  • 编译器是否只有一个错误?
  • 感谢您的快速回答!不,我找到了另一个 - Error:(1, 1) java: package annotations should be in file package-info.java

标签: java java-annotations


【解决方案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)

【讨论】:

  • 但是如何根据字符串包名反映包?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 2013-06-19
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
相关资源
最近更新 更多