java - 如何打印Java标记注释?

标签 java annotations

我刚刚开始阅读 Java 注释。我需要打印出 checkprime 方法上面写的所有三个注释,但它只打印第一个。这似乎是一个愚蠢的问题,但我被卡住了,无法在任何地方找到答案。

import java.io.*;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;   
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;

@Retention(RetentionPolicy.RUNTIME)

@interface MyMarker
  {

  }

@interface MyMarker1
  { 
String author();
  }

@interface MyMarker2
  {
String author();
String module();
double version(); 
  }

public class Ch10Lu1Ex4
{
@MyMarker 
@MyMarker1(author = "Ravi") 
@MyMarker2(author = "Ravi", module = "checkPrime", version = 1.1)
public static void checkprime(int num)
     {
      int i;
      for (i=2; i < num ;i++ )
       {
          int n = num%i;
          if (n==0)
          {
           System.out.println("It is not a prime number");
           break;
          }
      }
          if(i == num)
          {

              System.out.println("It is a prime number");
          }
}


public static void main(String[] args) 
  {
    try
      {
       Ch10Lu1Ex4 obj = new Ch10Lu1Ex4();
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       System.out.println("Enter a number:");
       int x = Integer.parseInt(br.readLine());
       obj.checkprime(x);
       Method method = obj.getClass().getMethod("checkprime", Integer.TYPE);
       Annotation[] annos = method.getAnnotations();
         for(int i=0;i<annos.length;i++)
          {
            System.out.println(annos[i]);
          }
       }
    catch(Exception e)
    {
        e.printStackTrace();
    }
  }
}

最佳答案

您需要将 @Retention(RetentionPolicy.RUNTIME) 添加到其余注释中,如下所示:

@Retention(RetentionPolicy.RUNTIME)
@interface MyMarker
{
}

@Retention(RetentionPolicy.RUNTIME)
@interface MyMarker1
  { 
String author();
  }

@Retention(RetentionPolicy.RUNTIME)
@interface MyMarker2
  {
String author();
String module();
double version(); 
  }

没有它,您的代码在运行时只能识别第一个注释,其他注释将不可用。

关于java - 如何打印Java标记注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146188/

相关文章:

java - Spring - 动态原型(prototype) Bean

java - 获取和使用 TestNG @test 注释参数

Java 设置枚举值

java - Maven Netbeans 代理

java - JSch/Java - 检测断开连接的服务器的正确方法

java - Java 中的 EnumMap 是完美的 HashMap 吗?

java - 在编译时检查传递给方法的字符串参数是否有@deprecated 注释

java - 编写java注解用于计时方法调用

iOS - MKMapView - 错误注释

java - 如何在java中将消费者组添加到消息中?