先来看一看今天的效果:

代码效果:


效果不重要,重要的是代码:

注解

官方解释:

从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。

百度百科

定义一个注解:

public @interface SZJ{}

元注解:

元注解是用来标示当前注解是干什么用的,什么时候用,常用的有2个

@Target

  • ElementType.ANNOTATION_TYPE 应用于注解类型。
  • ElementType.CONSTRUCTOR 应用于构造函数。
  • ElementType.FIELD 应用于字段或属性。
  • ElementType.LOCAL_VARIABLE 应用于局部变量。
  • ElementType.METHOD 应用于方法级注解。
  • ElementType.PACKAGE 可以应用于包声明。
  • ElementType.PARAMETER 可以应用于方法的参数。
  • ElementType.TYPE 可以应用于类的任何元素。

@Retention

  • RetentionPolicy.SOURCE 仅用于源码级别,会被编译器忽略[编译成class后,会被class丢弃该注解]
  • RetentionPolicy.CLASS 在编译器由编译器保留,JVM会忽略
  • RetentionPolicy.RUNTIME 由JVM保留,运行时可以使用

CLASS包含了SOURCE,RUNTIME包含SOURCE、CLASS。

SOURCE<CLASS<RUNTIME

举例:

@Retention注解解释:

RetentionPolicy.SOURCE 仅用于源码级别,会被编译器忽略[编译成class后,会被class丢弃该注解]


这个注解太偏源码,用到的地方比较少

RetentionPolicy.CLASS 在编译器由编译器保留,JVM会忽略


这个注解一般是APT技术用到的比较多,像一些ARouter,EventBus,Butterknifer等等框架都是用的这个注解.

反射

定义:

反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和
方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。是Java被视为动态语言的关键。

百度百科

使用场景:

不知道某个类是什么类,用来干什么的,就可以通过反射机制直接调用到他内部的属性,以及方法

反射与Class:

反射始于Class,Class是一个类,封装了当前对象所对应的类的信息。一个类中有属性,方法,构造器等,比如说有一个Person类,一个Book类,这些都是不同的类,现在需要一个类,用来描述类,这就是Class,它应该有类名,属性,方法,构造器等。Class是用来描述类的类。

获得Class对象:

  • 类名获取: 类名.class
  • 对象名获取: 对象名.getClass()
  • 全类名获取: Class.forName(“全类名”)

代码展示:

public void test() {System.out.println("我是方法哦");//类名获取Class<?> intCls = int.class;Class<?> strCls = String.class;//对象名获取UserBean userBean = new UserBean();Class<? extends UserBean> userBeanCls = userBean.getClass();//全类名获取try {Class<?> userBeanCls2 = Class.forName("com.example.annotation.bean.UserBean");} catch (Exception e) {e.printStackTrace();}}

反射的

android 注解和反射 (入门以及使用)相关推荐

  1. Android注解之从入门到并没有放弃

    定义 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理. 分类 注解分为标准注解和元注解: 标准注解 @Override:对覆盖超类中的方法进行标记,如果被标记的方法 ...

  2. android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解

    android 巧妙利用反射机制获取控件id,避免大量冗杂的findviewbyid和butterknife注解 一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的 ...

  3. day06--java高级编程:多线程,枚举类,注解,反射,网络通讯

    1 Day16–多线程01 1.1 程序概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 1.2 进程 1.2.1 概念 进程(proce ...

  4. Android注解处理器APT技术简介

    Android注解处理器APT技术简介 APT是什么 例子 APT有什么用 (好处) APT原理 (为什么) APT实践 (怎么做) 参考 APT是什么 APT全称"Annotation P ...

  5. 注解、反射、动态编译、字节码操作

    注解.反射.动态编译.字节码操作 前言:本篇博客将介绍Java中注解的定义.使用以及反射对Java动态性的支持和Java字节码操作,通过本篇内容,读者将对Java知识有更加深刻的理解,同时为后面And ...

  6. 开发自己的山寨Android注解框架

    目录 开发自己的山寨Android注解框架 开发自己的山寨Android注解框架 参考 Github黄油刀 Overview 在上一章我们学习了Java的注解(Annotation),但是我想大家可能 ...

  7. 自定义Android注解Part3:绑定

    上一节我们已经将自动生成注解代码部分介绍完毕,今天这篇文章是自定义Android注解系列的最后一篇文章.希望大家这一路走来有所收获. 经过前面的了解,我们三大部分:butterknife-annota ...

  8. 玩转java(Android)注解

    2019独角兽企业重金招聘Python工程师标准>>> 玩转java(Android)注解 1. java标准(原生)注解概览 Java API 中,在java.lang.java. ...

  9. Java、Android注解代码生成(ButterKnife原理、ViewBinding)

    前言 首先需要一些先验知识: 浅谈Java/Android下的注解 Java.Android基础之-反射 Java.Android静态代理与动态代理 简介 在我们常用的框架中注解和自动生成代码的身影很 ...

最新文章

  1. 【控制】粒子群优化(PSO,Particle Swarm Optimization)算法及 Matlab 仿真实现
  2. 【风控术语】数字金融欺诈行为名词表
  3. exfat分配单元大小选多少_NTFS/exFAT/FAT32,这三个常见选项是什么意思?
  4. 家长对孩子的期望 from father
  5. 去哪编辑html5页面,h5页面 判断网页在哪打开
  6. x86已安装该产品 剑灵vcredist_MySQL Server v5.7正式版(附安装和配置数据库教程)
  7. 全国计算机等级考试题库二级C操作题100套(第96套)
  8. 安卓操作sqlite3,增删改查
  9. 影院平台搭建 - (6)一个靠谱的视频播放方案的感想
  10. python画正方形的代码_python绘制正方形螺旋线的代码分享
  11. 莫名其妙就发个手机!这家公司员工晒年终奖品:人手一部iPhone 11
  12. SpringBoot之Bean之多实例选择
  13. java log4j 相对路径_log4j中配置日志文件相对路径[续集]
  14. 一分钟教你解决前端分流问题
  15. 免费领取WPS会员15天和WPS稻壳会员15天!新老用户均可领取。
  16. 短视频从业者实操资料大全(含代运营案例+报价单+合同协议 +分镜头脚本+管理运营)共180份
  17. matlab 门限回归模型,门限回归及Stata操作汇总与空间门槛回归模型简介
  18. CSS 分析倒三角|侧三角|正三角的实现
  19. 13.2 RS编码和纠错算法
  20. 一文了解肠-器官轴,肠好身体好

热门文章

  1. 检测 Linux VPS 是 Xen、OpenVZ 还是 KVM 架构的方法
  2. 通信原理 第六章:数字基带传输系统
  3. 【STM32篇】4988驱动步进电机
  4. WeChatExtension1.8.8中文版
  5. 翻译工作必备,英文标点符号使用规则
  6. mysql一个字符占用多少个字节
  7. 用rpm安装卸载软件
  8. Win10 Rational Rose 安装教程
  9. swift实现饭否应用客户端源码
  10. 大数据英语术语(第一弹)