Java注解小记

来源:互联网 发布:液晶编程器烧录器 编辑:程序博客网 时间:2024/06/13 08:19

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

主要作用有:

①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

以上资料来自百度百科。

说起Java中的注解,可能有的人不是非常清楚这么一个概念。但其实大部分接触过Java的程序员或多或少的都接触过Java的注解,只是可能你并没有意识到。  

就拿三种JDK中自带的注解来说:

class Person{public void run(){}}class Student extends Person{@Overridepublic void run(){}@Deprecatedpublic void study(){}@SuppressWarnings("all")public void call(){int i;}}
其中:

@Override注解表示注解下的方法为覆盖父类的方法并重写之。

@Deprecated注解表示注解下的方法已不再使用。一般使用此注解时表示旧的方法存在着某些问题或限制,有新的方法可以取代旧的方法以完成某个功能。

@SuppressWarnings("all")注解表示消除方法中所有的警告,即Warnings。括号中的参数可以为特定类型的警告,如null,rawtypes,deprecation等,all表示所有类型的警告均消除。


注解依据运行机制可分为三类:

1、源码注解(SOURCE):注解只在源码中存在,编译为.class文件之后便不存在了。

2、编译时注解(CLASS):注解在源码中以及.class文件中均存在。

3、运行时注解(RUNTIME):注解除了在源码及.class文件中存在之外,在程序运行时同样存在,可以影响运行时的代码逻辑。


自定义注解:

import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/** * ElementType.TYPE 目标为类,接口,枚举类型以及注解 * ElementType.FIELD 目标为类中的成员 * ElementType.METHOD 目标为类中的方法 * 还有诸如ElementType.CONSTRUCTOR、ElementType.PACKAGE等可以根据字面意思推敲得出,便不再列举了。 */@Target(ElementType.TYPE)  @Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface Table {String value();}
以上为一个简单的自定义注解。

说到自定义注解就不得不说元注解。元注解是定义注解的注解。主要有以下四类:

@Target标注该注解使用的范围,如为类注解,为方法注解等,具体参数参照上述代码中的注释。

@Retention标注该注解的运行机制,有三类,即上面提到的源码注解、编译时注解以及运行时注解。

@Documented为文档注解,若有则表明生成文档doc时包含此注解。

@Inherited表示注解允许继承,可以作用到子类。
自定义注解一般配合反射一起使用。




原创粉丝点击