java_自定义注解_1
来源:互联网 发布:php 转为utf8 编辑:程序博客网 时间:2024/06/07 00:05
一.注解简介
1、元注解
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
1.1、@Retention: 定义注解的保留策略
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
1.2、@Target:定义注解的作用目标@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) ///包
1.3、@Document:说明该注解将被包含在javadoc中1.4、@Inherited:说明子类可以继承父类中的该注解
掌握以上知识,可以自己写一个注解
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface Delete { String description() default "user"; String key() default "delete";}
public class Dao { @Delete(key="delete") private String operation = "delete"; Integer delete(){ System.out.println(operation); return 0; }}
public class Test { public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Dao obj = new Dao(); Class<Dao> c = Dao.class; Field field = c.getDeclaredField("operation"); field.setAccessible(true); if(field.isAnnotationPresent(Delete.class)){ Delete delete = field.getAnnotation(Delete.class); System.out.println(field.get(obj)); System.out.println(delete.key()+" "+delete.description()); } }}
输出结果:
delete
delete user
这样我们就了解注解的基本工作原理了,下面将自定义注解使用在web项目中的框架验证。
- java_自定义注解_1
- java_自定义注解_2
- Java_杂记_1
- Java_注解Annotation
- Java_详解_1、==和Equal
- Java_自定义异常
- 自定义模板引擎_1
- Java_注解 (元注解 / Java内置注解 / Android内置注解)
- 第九章:Java_枚举类和注解
- java学习笔记(annotation 注解_1)
- java_自定义异常、打包、自定义模块模式、
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- 自定义注解
- Project2013新功能---在Project中使用Lync来沟通
- struts2以GET方式接收的参数是中文时会乱码的解决方法
- 编译驱动的问题--linux版本不同不能加载驱动
- Fedora 15/16 安装后需要做的28件事
- Spring事务配置的五种方式
- java_自定义注解_1
- sqlserver2005 备份sql命令
- pomelo学习笔记 (1)基本概念
- rqnoj-69
- Storm教程(翻译)
- 嵌入式职业规划
- Wince串口分析
- 学习python一些资料和网站推荐
- Matlab中图像函数大全