你的位置:首页 > 软件开发 > Java > Java:注解(元数据)

Java:注解(元数据)

发布时间:2016-04-11 18:01:28
初识Java注解  所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是指描述代码间关系或者代码与其它资源(例如数据库表)之间内在联系的数据,对Str ...

初识Java注解

  所谓的元数据是指用来描述数据的数据,可能刚听到元数据的时候你会有点陌生,其实任何一个使用过struts或者hibernate的开发人员都在不知不觉中使用元数据,更通俗一点来说元数据是指描述代码间关系或者代码与其它资源(例如数据库表)之间内在联系的数据,对Struts来说就是struts-config.

  基于元数据的广泛应用,JDK1.5引入了注解(Annotation)的概念来描述元数据,为我们提供了一种在代码中添加信息的方法,使我们可以在运行时或某个时刻方便地使用这些数据(通过解析注解来使用这些数据)

 

注解的作用

A、编写文档:通过代码里标识的元数据生成文档,常用的有@param、@return等;。

B、代码分析:通过代码里标识的元数据对代码进行分析。

  (1)替换.properties和

  (2)支持横切关注点:注解能够很好的处理依赖注入、服务发现管理对象、验证和许多其他类似的事情。如果需要用到面向方面编程,而你不想另外使用一种面向方面的语言(如AspectJ),这时注解是一个可行的选择。

C、编译检查:通过代码里标识的元数据让编译器实现基本的编译检查。

 

Java内置的注解集

注解可以用于类、方法、变量、参数和包等程序元素,Java定义了一个内置的注解集:

(1)用于Java代码的注解:

  @Override:校验方法是重写方法,如果方法在父类中未找到会产生一个编译警告。

  @Deprecated:标记方法已经废弃不用了,如果还在使用此方**产生一个编译警告。

  @SuppressWarnings:告知编译器抑制由注解参数指定的编译时期警告。

(2)用于其它的注解:以下说明的元注解有一个共同的特点就是它们都只能用在Annotation的声明上

  @Retention:用来声明注解的保留策略,即生命范围,有CLASS、RUNTIME和SOURCE这三种,分别表示注解保存在类文件、JVM运行时和源代码中。只有当声明为RUNTIME的时候,才能够在运行时刻通过反射API来获取到注解的信息;如果注解声明中不存在Retention注解,则保留策略默认为RetentionPolicy.CLASS

  @Target:指示注解所适用的程序元素的种类,即注解作用范围(如方法、字段等),如果注解声明中不存在Target,则声明的注解可以用在任一程序元素上。

  @Documented:指示某一类型的注解将通过javadoc和类似的默认工具进行文档化。

  @Inherited:只能用于Class级别的Annotation,用来说明被标记的Annotation会被该类的所有子类自动继承

 

自定义注解

Java允许自定义注解,通过在类名前使用@interface来定义。包java.lang.annotation中包含所有定义自定义注解所需的元注解和接口,如接口java.lang.annotation.Annotation是所有注解继承的接口,且是自动继承,不需要定义时指定,类似于所有类都自动继承Object。

示例:

package com.test;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface MyAnnotation {    public String name();    public int value() default 0;}

原标题:Java:注解(元数据)

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。