java - 如何获取不同Annotation的值

标签 java annotations

如何打印不同注释的注释值?

我有以下两个注释

@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Author 
{
    String name() default "--Unknown--";
    String date() default "--Unknown--";
}

@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Revision 
{
    int version() default 0;
    String modifiedBy() default "--Unknown--";
}

现在一个类同时使用这个注释,并且在这个类中我想显示这两个注释的注释值

@Author(
        name = "Panther",
        date = "22.04.2013"
        )

@Revision(
        version = 2,
        modifiedBy = "Black", 
        )
public class AnnotationTest
{
    public static void main(String[] args)
    {
        AnnotationTest b = new AnnotationTest();
        for(Annotation a : AnnotationTest.class.getDeclaredAnnotations())
        {
            // for Author display name and date
            // for revision display version and modifiedBy
        }
    }
}

有什么办法可以做到这一点吗?

最佳答案

您可以使用instanceof:

for (Annotation a : AnnotationTest.class.getDeclaredAnnotations()) {
   if (a instanceof Author) {
      Author author = (Author) a;
      System.out.println("Author Name: " + author.name());
      System.out.println("Date: " + author.date());

   } else if (a instanceof Revision) {
      Revision revision = (Revision) a;
      System.out.println("Version: " + revision.version());
      System.out.println("Modified By: " + revision.modifiedBy());
   } 
}

关于java - 如何获取不同Annotation的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146991/

相关文章:

java - 从类中引用 java.lang.annotation.Annotation?

ios - 如何通过 Swift 使用 GPS 坐标在 map 上添加多个注释?

java - 如何在 Java 枚举中定义静态常量?

scala - 不能使用 java 值作为 Scala 函数上的 java 注释的参数

java - JTable Multiarray 中复选框值的 setValueAt

尝试在 OS X 上运行 Cassandra 时出现 Java 错误 : Bad version number in . 类文件错误

class - @Test(enabled = false) 是否适用于 TestNG 中的类?

java - Java 声明式(基于注释)缓存解决方案

java - 如何收集列表中的列表

Java 聊天客户端 GUI 建议