java基础之注解
2015-12-29 00:00
453 查看
摘要: java的三大高级特性之一,是JDK的1.5的引进。注解将广大的javaer从拿巨大的XML配置文件中解放处理,专注与业务代码。同时大大减低了框架的上手难度。注解有注解类创建,通过反射获取其值。
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.4 总结:
a)一个位置(类、属性、方法)只有一种注解。
b)注解主要用来存放设定。
2.2 使用和解析
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序