Annotation原理
为什么使用注解:
1、通过注解,可保存源数据在Java源代码中;并且注解不同于注释,注解享有编译期的类型检查保护。
2、可在描述符性质的类或接口中抽取重复性的工作,通过注解来简化与自动化这些工作。
注解本身:
1、三个点:
1) 注解的@Target和@Retention
2) 注解的属性
3) 注解处理器
四个元注解:
@Target 表示注解可以用于什么地方。(ElementType.FIELD 字段,包括enum实例
/LOCAL_VARIABLE
/CONSTRUCTOR
/METHOD
/TYPE
/PACKAGE
/PARAMETER
)
@Retention 表示需要在什么级别保存该注解信息。(RetentionPolicy.RUNTIME VM在运行期也保留注解
/SOURCE 注解将被编译器丢弃
/CLASS 注解在class文件中可用,但会被VM丢弃
)
@Documented 将此注解包含在Javadoc中
@Inherited 允许子类继承父类上的注解
注解处理器:
如果没有用来读取注解的工具,那注解也不会比注释更有用。 ——《Thinking in java》
原理:
通过反射得到某一个类上的注解、或者是某一个方法、某一个字段上的注解,然后取到注解的属性值,去完成相应需要的业务工作。
自定义一个简单注解,通过反射来处理。
//定义一个注解 @Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Display { String value() default "no values"; }
public class Hello {
//将自定义注解贴在一个方法上
@Display("hello")
public void sayHello(){
}
}
// 注解处理器
public class DisplayTracker {
//通过反射得到该方法上的Display注解。
public static void trackDisplays(Class<?> cl){
for(Method m :cl.getDeclaredMethods()){
Display display = m.getAnnotation(Display.class);
if(display!=null){
System.out.println(display.value());
}
}
}
public static void main(String[] args) {
trackDisplays(Hello.class);
}
}
输出:

Annotation原理的更多相关文章
- Java Annotation原理分析(一)
转自:http://blog.csdn.net/blueheart20/article/details/18725801 小引: 在当下的Java语言层面上,Annotation已经被应用到了语言的各 ...
- java基础-注解Annotation原理和用法
在很多java代码中都可以看到诸如@Override.@Deprecated.@SuppressWarnings这样的字符,这些就是注解Annotation.注解最早在jdk5中被引入,现在已经成为j ...
- 注解Annotation原理详解及其应用示例
一.什么是注解 注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进 ...
- Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...
- Java Annotation 及几个常用开源项目注解原理简析
PDF 版: Java Annotation.pdf, PPT 版:Java Annotation.pptx, Keynote 版:Java Annotation.key 一.Annotation 示 ...
- 阿里资深工程师分享支付宝热补丁技术—— AndFix原理
本文由嵌入式企鹅圈原创团队成员.阿里资深工程师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理,它本质上就是hook要修改的函数,这样一来在正式版本发布时就不能直接拿热补丁的代码集成 ...
- 支付宝热补丁技术— AndFix原理[阿里Hao]
本文由嵌入式企鹅圈原创团队成员.阿里资深project师Hao分享. 上次我们介绍了用dexposed方案实施热补丁的原理.它本质上就是hook要改动的函数.这样一来在正式版本号公布时就不能直接拿热补 ...
- 3.JAVA语言基础部分—Class类与反射
什么是Java反射机制? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的以及动态调用对象的方法的功能称为 ...
- Java学习之注解Annotation实现原理
前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...
随机推荐
- TAT
瞎扯 继\(HNOI,\)学科\(,CTSC, APIO\)连续爆炸之后 曾一度的怀疑人生,没有任何搞学习的欲望 不断的反省自己:我为什么这么菜? 然后回去搞学科,一直处于一个颓废的状态 后来得知\( ...
- 01.CSS动画-->transform
transform: translate(参数1,参数2):让元素在X轴与Y轴方向发生偏移-->参数1:X:参数2:Y rotate(参数1):让元素进行旋转:单位(deg) scale(参数1 ...
- Centos7 下安装Apache2 + MySQL + PHP7
Apache 1.安装Apache yum install httpd 2.设置服务器开机自动启动Apache systemctl enable httpd.service 若要验证是否自动启动可在重 ...
- android studio 3.0 以上 查看sharedpreference
android studio 3.0 以上 查看sharedpreference 点击android studio 右侧的device file explore,找到data / data 目录: 找 ...
- malloc()函数,calloc()函数,realloc()函数,free()函数
malloc()函数 头文件:#include <stdlib.h> malloc() 函数用来动态地分配内存空间,其原型为:void* malloc (size_t size); [参数 ...
- PRINCE2是什么意思?
PRINCE2是一种长期以来公认的项目管理方法,在英国公共部门广泛应用,在私营企业界也发展成为事实上的应用方法. PRINCE2开发于1989年,是一种结构性的项目管理方法,其所有者OGC(英国商务部 ...
- windows 下 openssl 生成RSA私钥公钥以及PKCS8
生成RSA私钥 打开bin文件夹下面的openssl.exe,输入genrsa -out rsa_private_key.pem 1024 把RSA私钥转换成PKCS8格式 输入命令pkcs8 -to ...
- sql server 查询分析器中表名无效,有红线,其实是这张表的
ctrl+shift+R 就OK了,就是刷新本地缓存.
- Attribute+Reflection,提高代码重用
这篇文章两个目的,一是开阔设计的思路,二是实例代码可以拿来就用. 设计的思路来源于<Effective c#>第一版Item 24: 优先使用声明式编程而不是命令式编程.特别的地方是,希望 ...
- 《IT老外在中国》第11期:首次访华的编程巨匠、C#之父Anders
见到Anders的时候,他正专注的倾听国内开发者的提问,一副远视眼镜斜歪着架在头顶,宽松的深蓝色休闲毛衫随意套在白色圆领T恤外. 如果不是他那专注的神情,以及现场见证开发者对他的狂热崇拜,很难想象这位 ...