likes
comments
collection
share

注解全解析1 -- 基本概念介绍

作者站长头像
站长
· 阅读数 4

前言

关于注解我相信大家都见的非常多了, 不论是Android或者Java常见的@Override等注解还是我们经常使用的一些开源库都包含注解,原因很简单,注解可以让代码更简洁,比如Retrofit、PermissionsDispatcher等库,但是很多时候我们都是知道这么用,却很少自己去自定义注解。

所以这篇文章我们就来深挖一下自定义注解的使用,以及拿一个开源库来解析源码,剖析原理。

正文

先来了解一些关于注解的基本知识。

元注解

元注解是在定义自定义注解时需要用到,也就是注解的注解,比如我们自定义的注解需要用在什么地方、这个注解存活的时间等属性都是通过元注解来进行说明。

直接看下面总结

注解全解析1 -- 基本概念介绍

第一眼看时这东西未免有点多,难以记住,大可不必都记着,首先主要用到的就是@Target和@Retention这2个注解。

其中你想你的注解运用在什么地方,就使用@Target来说明;

对于具体情况再区分使用运行时注解还是编译时注解,其中RUNTIME就是运行时注解,CLASS范围就是编译时注解,这2种注解区别很大,具体实现方式和侧重点也不一样。

运行时注解和编译时注解

我们还是看个总结图,看一下这2种注解方式的区别:

注解全解析1 -- 基本概念介绍

哦,看到这里我们就大概懂了,一些开源库有时需要在添加注解后进行build才能使用一些生成的方法,这种就是编译时注解,通过生成新的文件来完成。

所以在考虑自定义什么类型注解是,也是从上面的区别来考虑,比如我需要在运行时拿到什么属性或者资源就使用运行时注解,比如我需要更快的性能,在编译器通过生成文件、使用生成文件的方法来完成需求则使用运行时注解。

总结

这篇文章内容很少,但是非常重要,对于注解必须要理解元注解以及2种注解的区别,在后面文章我们会配合开源库再进行介绍这些注解的使用。