现在的位置: 首页 > 综合 > 正文

JAVA Annotation(1)

2014年03月16日 ⁄ 综合 ⁄ 共 1455字 ⁄ 字号 评论关闭

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
void
info(){

        

     }

}

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

Class,Constrctor,Field,Method,Package.

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

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

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

        for(Annotation an :aArray){

            System.out.println(an);

        }

}

抱歉!评论已关闭.