http://www.cnblogs.com/linjiqin/archive/2011/02/16/1956426.html
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
自定义注解及其应用
1)、定义一个最简单的注解
public @interface MyAnnotation {
//......
}
2)、把注解加在某个类上:
@MyAnnotation
public class AnnotationTest{
//......
}
以下为模拟案例
自定义注解@MyAnnotation
package com.ljq.test;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 定义一个注解
*
*
* @author jiqinlin
*
*/
//Java中提供了四种元注解,专门负责注解其他的注解,分别如下
//@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
//RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
//RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
//RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
//@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
//ElementType.CONSTRUCTOR: 构造器声明
//ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
//ElementType.LOCAL_VARIABLE: 局部变量声明
//ElementType.METHOD: 方法声明
//ElementType.PACKAGE: 包声明
//ElementType.PARAMETER: 参数声明
//ElementType.TYPE: 类、接口(包括注解类型)或enum声明
//@Documented将注解包含在JavaDoc中
//@Inheried允许子类继承父类中的注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {
//为注解添加属性
String color();
String value() default "我是林计钦"; //为属性提供默认值
int[] array() default {1, 2, 3};
Gender gender() default Gender.MAN; //添加一个枚举
MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday="我的出身日期为1988-2-18");
//添加枚举属性
}
package com.ljq.test;
/**
* 注解测试类
*
*
* @author jiqinlin
*
*/
//调用注解并赋值
@MyAnnotation(metaAnnotation=@MetaAnnotation(birthday = "我的出身日期为1988-2-18"),color="red", array={23, 26})
public class AnnotationTest {
public static void main(String[] args) {
//检查类AnnotationTest是否含有@MyAnnotation注解
if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
//若存在就获取注解
MyAnnotation annotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
System.out.println(annotation);
//获取注解属性
System.out.println(annotation.color());
System.out.println(annotation.value());
//数组
int[] arrs=annotation.array();
for(int arr:arrs){
System.out.println(arr);
}
//枚举
Gender gender=annotation.gender();
System.out.println("性别为:"+gender);
//获取注解属性
MetaAnnotation meta=annotation.metaAnnotation();
System.out.println(meta.birthday());
}
}
}
package com.ljq.test;
/**
* 枚举,模拟注解中添加枚举属性
*
* @author jiqinlin
*
*/
public enum Gender {
MAN{
public String getName(){return "男";}
},
WOMEN{
public String getName(){return "女";}
}; //记得有“;”
public abstract String getName();
}
package com.ljq.test;
/**
* 定义一个注解,模拟注解中添加注解属性
*
* @author jiqinlin
*
*/
public @interface MetaAnnotation {
String birthday();
}
分享到:
相关推荐
java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解代码java注解...
java注解和反射的个人学习笔记
JAVA注释模板以及详细设置解释等等。 注释模板 如何设置
Java注解实现
超级好用的 java 注释模板,吐血总结,整理。吐血总结,整理。
主要包括:普通java注解,hibernate注解,spring注解,struts2注解,对于学习注解的朋友有很大的帮助!
简述java注解功能及用法,有代码示例。看起来还成,比较简单,学spring注入的时候要用到注解注入的话,本书属于必看版。
java注释全解,内容全面,包括hibernate注解、Java注解、Spring注解、SSH全注解等内容,分为4个文档介绍。另附一些精品java学习资料,欢迎大家下载学习。
入门级java 注解学习示例代码
java注解解析知识要点 精简易懂
Java注解、反射、动态代理demo
Java 注解(Annotation) - 请认准 ih0qtq
java注解实现通用Excel中文表格转实体对象列表,支持中文表头,在Excel数据导入使用的通用工具类,代码简洁优雅 。基于注解实现的支持中文表头的读取Excel数据并转换为实体对象列表的工具类,使用该工具类可将Excel...
Java注解的使用例子,使用Ant编译,执行run.bat运行.
eclipse中java类注释模板,有需要的朋友可以参考使用。
这是自己总结的java注解 使用了思维导图,方便读取,快速阅读
java注解详解[文].pdf
java 注释模板 java 注释模板 java 注释模板 java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板java 注释模板
自己做得java项目注释统计工具,可统计代码行数,注释行数,能统计各种注释样式,能看统计详细情况,能生成报表,可自由控制合格率!算法高效!
java 注解 反射 字节码 类加载 包括pdf资料以及全部源码文件,具有非常大参考价值和学习意义