`
runfeel
  • 浏览: 904413 次
文章分类
社区版块
存档分类
最新评论

JAVA Annotation(1)

 
阅读更多

Java对元数据(MetaData)的支持,也就是Annotation(注释)。它是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具,开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。

Annotation提供了一条为程序元素设置元数据的方法,从某些方面来看,Annotation就像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被存储在Annotation的”name=value”对中。

Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来取得注释里的元数据。

使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素。

限定重写父类方法:@Override,用来指定方法覆载的,可以强制一个子类必须要覆盖父类的方法。

标识已过时:@Deprecated,用于标识某个程序元素(类,方法等)已过时,当其他程序使用已过时的类,方法时,编译器将会给出警告。

抑制编译器警告:@SuppressWarnings,指示被Annotation标识的程序元素(以及在该程序元素中的所有子元素)取消显示指定的编译器警告。

定义新的@Annotation类型使用@interface关键字,它用于定义新的Annotation类型。

Public @interface Test{

}

定义了该Annotation之后,就可以在程序任何地方来使用该Annotation,使用Annotation时的语法非常类似于public,final这样的修饰符。

@Test

Public class MyClass{

}

public @interface MyTag {

String name() default "yeeku";

int age() default 32;

}

public class Test4{

@MyTag

public voidinfo(){

}

}

Java使用Annotation接口来代表程序元素前面的注释,该接口是所有Annotation类型的父接口。除此之外,在java.lang.reflect包下新增了AnnotatedElement接口,该接口代表程序中可以接受注释的程序元素,该接口主要有如下几个实现类:

Class,Constrctor,Field,Method,Package.

当一个Annotation类型被定义为运行时Annotation后,该注释才是运行时可见,当class文件被装载时被保存在class文件中的Annotation才会被虚拟机读取。

public static voidmain(String[] args) throws SecurityException, NoSuchMethodException,ClassNotFoundException{

Annotation[] aArray = Class.forName("Test4").getMethod("info").getAnnotations();

for(Annotation an :aArray){

System.out.println(an);

}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics