一、什么是注解(Annotation)
注解即标注,是代码中的元数据(元数据:描述数据的数据),通过使用注解使得程序开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。请看以下代码片段:
对于初学者而言,其实经常会看到类似代码,心里会想@Override是什么鬼?其实它就是注解,在toString()方法上加入@Override,表示该注解下面的toString()方法必须重构父类方法。
看到这里我想有人就会认为接下来我会和大家介绍各种各样的注解了?!我偏不!
二、注解类型的语法标准
注解是Java中一种特殊的类型,接下来我们来看一下如何设计一个注解类型。
1、语法标准:
public @interface 注解类型名称
{
[ 数据类型 变量名 () [ default 初始值 ]; ]
}
注:
1)"[ ]"中的内容可有可无,如果注解内部为空,则表示当前注解为标识注解。
2)注解中智能包含变量,不能包含方法。
3)注解是代码里的特殊标记,不可以单独使用,需要配合类或接口一起使用。
4)注解类型可以被用来为程序元素设置元数据(程序元素:类、方法、成员变量等)。
2、案例:设计注解类型Testable,由该注解标识的方法为可测试方法。该注解内部为空,表示该注解为标识注解。
public @interface Testable
{
}
public class Test
{
@Testable
public void info()
{
System.out.println(“我是info方法”);
}
public void info1()
{
System.out.println(“我是info1方法”);
}
}
该类中加入@Testable注解,表示info方法为可被执行到的方法,仅仅是描述该方法是可被执行的方法而已,并不会有任何动态交互能力,如果想要达成该注解的作用必须要编写配套的Java应用程序,具体代码可参考如下代码。
大家可以思考,如果想要解析一个类的内部结构,我们可以通过什么技术来实现呢?
答案是:反射机制(接下来这一段有关于反射机制的相关内容不清楚的朋友们,按照下面代码进行调试,具体反射机制的相关知识稍后会发布)。
在java.lang.reflect包中常见的具有反射功能的工具类:Method(方法类)、Field(字段类)、Constructor(构造方法类)等。
以上这些工具类扩充了读取运行时注解的能力,即实现java.lang.annotation.AnnotatedElement接口;该接口是所有程序元素的父接口,该接口中提供了用于获取注解信息的相关方法。
getAnnotation(Class annotationClass):返回该程序元素上的、指定类型的注解,如果该类型的注解不存在,则返回null
Annotation [] getAnnotations():返回该程序元素上存在的所有注解。
Annotation是所有注解的父接口,默认情况下任何一个接口类型都实现该接口。
boolean isAnnotationPresent(Class annotationClass):判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false。
代码参考:
解析Test类,并执行带有@Testable标识的方法。
import java.lang.reflect.Method;
public class UseTest
{
public static void main(String[] args)throws Exception
{
Class c=Class.forName(“Test”);
Object o=c.newInstance();
Method[] me=c.getDeclaredMethods();
for(Method temp:me)
{
if(temp.isAnnotationPresent
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。