DBMNG数据库管理与应用

独立思考能力,对于从事科学研究或其他任何工作,都是十分必要的。
当前位置:首页 > MySQL > 常见问题

在运行时使用反射获取注解(2)

12.4.3 在运行时使用反射获取注解(2)

这个程序使用前面介绍的反射,获取并显示与Meta类中myMeth()方法关联的MyAnno注解中str和val的值。有两点需要特别注意。第一点,注意下面这行代码中的表达式MyAnno.class:

  1. MyAnno anno = m.getAnnotation(MyAnno.class); 
对这个表达式求值的结果是表示MyAnno类型的Class对象,即注解。这种结构被称为“类字面值”。无论何时,当需要已知类的Class对象时,就可以使用这类表达式。例如,可以使用下面这条语句获取Meta的Class对象:
  1. Class<?> c = Meta.class; 

当然,只有当事先知道对象的类名时才能使用这种方式,但我们并不总是知道对象的类名。通常,可以获取类、接口、基本类型以及数组的类字面值(记住,<?>语法与Java的泛型特性有关,泛型将在第14章介绍)。

需要注意的第二点是,当通过下面这行代码进行输出时,如何获取与str和val关联的数值:

  1. System.out.println(anno.str() + " " + anno.val()); 

注意这里使用方法调用语法来调用它们。当需要注解成员的值时,可以使用相同的方式。

1. 第二个反射示例

在前面的例子中,myMeth()方法没有参数。因此,当调用getMethod()方法时,只传递名称myMeth。但是,为了获取带有参数的方法,必须指定表示参数类型的类对象作为getMethod()方法的参数。例如,下面的程序与前面的程序稍微有些区别:

 
 

该版本的输出如下所示:

  1. Two Parameters 19 

本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号