在下面的代码中

我正在尝试使用在另一个文件中创建的注释。我不明白为什么必须编写Class c=test.getClass();,因为我已经创建了TEST类的对象,那么为什么需要这样做?我尝试不使用此Class c=test.getClass();但显示错误

public static void showAnnotations()
     // Function to show annotation information
     {
         TEST test=new TEST(); // Instantiating Test class
         try
         {
             Class c=test.getClass(); // Getting Class reference
             java.lang.reflect.Method m=c.getMethod("testMethod"); // Getting Method reference
             // Getting Class annotation
             MyAnnotation annotation1=
               (MyAnnotation)c.getAnnotation(MyAnnotation.class);
             // Getting Method annotation
             MyAnnotation annotation2=m.getAnnotation(MyAnnotation.class);
             // Displaying annotation information
             System.out.println("Author of the class: "+annotation1.author());
             // Displaying annotation information
             System.out.println("Date of Writing the class: "+annotation1.date());
             // Displaying annotation information
             System.out.println("Author of the method: "+annotation2.author());
             // Displaying annotation information
             System.out.println("Date of Writing the method: "+annotation2.date());
         }
         catch(NoSuchMethodException ex)
         {
             System.out.println("Invalid Method..."+ex.getMessage());
         }
     }

最佳答案

使用Class c=test.getClass();时,您无需创建新对象(或类似的对象),而只需获取用于获取/读取方法/字段/等的runtime class(类本身)。班上的

如果您想在运行时了解某个字段的类(例如获取类的名称),则使用此TEST.class做同样的事情,因为您已经知道需要和使用哪个类,而不必需要创建它的一个实例。




  公共最终课程getClass()
  
  返回此对象的运行时类。
  返回的Class对象是被以下对象锁定的对象
  表示的类的静态同步方法。实际上
  结果类型为Class,其中| X |是擦除
  调用getClass的表达式的静态类型。对于
  例如,此代码段中不需要强制转换:
  
  n = 0;类c = n.getClass();

关于java - Java中的注释为什么要创建类类型引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23042062/

10-08 23:25