Java自定义注解在安卓开发中的简单运用

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、接口、枚举、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

作用分类: ①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】 ② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】 ③编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查【Override】

java中有很多框架都用到了注解包括java的Api也是,想一些网络框架的@GTE,@POST,@PATH等等,java中的@Override注解是可以被继承的,它是可以在代码编译期告诉JVM类之间的继承关系,那到底注解是怎么实现的呢,首先你要定义一个注解,然后通过反射来实现你所要的功能。

Java的元注解

元注解就是注解的注解,听起来比较拗口,说白了就是说明注解的一些属性,比如当前注解是作用在类还是局部变量、实例变量、方法,注解的生存期、能否被子类继承、可否被文档化等等。

@Documented  表明当前注释可以文档化 @Inherited 注释当前的注解可以被元素的子类继承 @Target 注解的使用范围 1,CONSTRUCTOR 构造器 2, FIELD 实例变量  3,LOCAL_VARIABLE 局部变量 4,METHOD 方法 5,PACKAGE 包 6,PARAMETER 参数7,TYPE 类、接口或注解接口、枚举enum. @Resention 声明注解的生命周期,1,源码级2,编译期3,运行期

注解

定义一个名为BindView的注解,使用@interface来声明这是一个注解,所有的注解内方法不能有参数,其他的均和普通的接口写法一致,可以定义默认返回值也就是default n的形式,如果注解内只有一个方法那么只能使用value作为方法名,这个注解方法可以通过反射来返回一个int类型的值,当然这要我们自己去实现。

通过反射找到控件

以上代码有一些反射基础的同学都可以看明白,而且的写了注释,最后是页面中的代码

Activity页面

在控件上面写上注释和它的ID值,在使用控件之前把上下文传递给FindViewByReflection这个类,让它通过反射来遍历所有用到了注释的变量,然后为它们赋值,也就是在运行过程中来findViewById()。 如有错误或遗漏,欢迎留言指出

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏奔跑的蛙牛技术博客

分布式对象之客户\服务器角色以及RMI初探

程序员希望通过无所不在的java对象来作为所有问题的解决之道,思想就是通过网络请求相互协作。我可以调用一个远程对象帮我得到我所要的信息,并作为响应的一部分返回

21410
来自专栏技术小黑屋

一个事半功倍的Java反射库

在Java和Android中,我们常常会使用反射来达到一些兼容的目的。Java原生提供的反射很是麻烦,使用起来很是不方便。比如我们想要调UserManager的...

16020
来自专栏技术小黑屋

深入探索Java 8 Lambda表达式

本文为 InfoQ 中文站特供稿件,首发地址为:http://www.infoq.com/cn/articles/Java-8-Lambdas-A-Peek-U...

19330
来自专栏奔跑的蛙牛技术博客

什么是字节码?

字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。字节是电脑里的数据量单位。

57430
来自专栏技术小黑屋

详解Java中的注解

在Java中,注解(Annotation)引入始于Java5,用来描述Java代码的元信息,通常情况下注解不会直接影响代码的执行,尽管有些注解可以用来做到影响代...

11610
来自专栏技术小黑屋

理解Java中的ThreadLocal

提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总...

11440
来自专栏奔跑的蛙牛技术博客

java基本程序设计

保护对象实例域,提供黑盒的概念保护数据域的安全,体现了面向对象思想。数据>算法的思想

11620
来自专栏极客编程

Java为Hyperledger Fabric(超级账本)开发区块链链代码智能合约之环境部署

您或许听说过区块链,但可能不确定它对 Java™ 开发人员有何用。本教程将帮助大家解惑。我将分步展示如何使用 Hyperledger Fabric v0.6 来...

43020
来自专栏奔跑的蛙牛技术博客

泛型程序设计

当程序调用泛型类型,如果擦除返回类型,编译器将插入强制类型转换 Pair<Employee> buddies = . . Employee buddy = ...

9510
来自专栏技术小黑屋

探究Java中的克隆

克隆,想必大家都有耳闻,世界上第一只克隆羊多莉就是利用细胞核移植技术将哺乳动物的成年体细胞培育出新个体,甚为神奇。其实在Java中也存在克隆的概念,即实现对象的...

9120

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励