您的位置:首页 > 编程语言 > Java开发

java基础之注解

2015-12-29 00:00 453 查看
摘要: java的三大高级特性之一,是JDK的1.5的引进。注解将广大的javaer从拿巨大的XML配置文件中解放处理,专注与业务代码。同时大大减低了框架的上手难度。注解有注解类创建,通过反射获取其值。

java基础之注解

一. 概述

1.1 简介

java的三大高级特性之一,是JDK的1.5的引进。注解将广大的javaer从拿巨大的XML配置文件中解放处理,专注与业务代码。同时大大减低了框架的上手难度。注解使用先创建一个注解类,在正常的类中使用,然后通过反射获取其值。

1.2 元注解

a) @Target:该注解可以用在什么地方,可选的ELementType参数。

1. CONSTRUCTOR:用于描述构造器
     2. FIELD:用于描述域
     3. LOCAL_VARIABLE:用于描述局部变量
     4. METHOD:用于描述方法
     5. PACKAGE:用于描述包
     6. PARAMETER:用于描述参数
     7. TYPE:用于描述类、接口(包括注解类型) 或enum声明

b)@Retention:表示需要在什么地方保存该注解信息,可选RetenttionPolicy参数。

1.SOURCE:在源文件中有效(即源文件保留)

     2.CLASS:在class文件中有效(即class保留)

     3.RUNTIME:在运行时有效(即运行时保留)

1.3 java相关类:

java.lang.annotation:元注解都在里面。

1.4 总结:

a)一个位置(类、属性、方法)只有一种注解。

b)注解主要用来存放设定。

二. 实例

2.1 注解类

/**
* @see 注释
*
* @author ssHss
*
*/

@Target({ ElementType.TYPE, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {

public enum MyEnum {
ADD, EDIT, UPDATE, INSERT, DELETE
}

/**
* @SEE 注解的属性都是方法
* @author ssHss
*
*/

public String name()

default "fieldName";

public String getFunction()

default "fieldName";

MyEnum[] doMyType() default MyEnum.ADD;

public boolean defaultDBValue() default false;

}


2.2 使用和解析

/**
* @see 测试类
* @author ssHss
*
*/
@MyAnnotation(defaultDBValue = false, getFunction = "ids", name = "myTestAnno_id", doMyType = { MyEnum.ADD })
public class MyTestAnno1 {

public int id;
@MyAnnotation(defaultDBValue = true, getFunction = "myTestAnno1", doMyType = { MyEnum.INSERT, MyEnum.EDIT })
public String myTestA;

@MyAnnotation(defaultDBValue = false, name = "myTestAnno_id", doMyType = { MyEnum.UPDATE, MyEnum.DELETE })
public String myTestB;

public static void main(String[] args) {
System.out.println("CLASS start");
if (MyTestAnno1.class.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation myan = MyTestAnno1.class.getAnnotation(MyAnnotation.class);
System.out.println(myan);
}

System.out.println("FIELD start");
for (Field field : MyTestAnno1.class.getFields()) {
if (field.isAnnotationPresent(MyAnnotation.class)) {
MyAnnotation myan = MyTestAnno1.class.getAnnotation(MyAnnotation.class);
System.out.println(myan);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java annotation