注解与反射

Annotation的作用

  • 不是程序本身,可以对程序作出解释
  • 可以被其他程序读取

Annotation的格式

  • @注释名,还可以添加参数值

Annotation在哪里使用?

  • 可以在package,class,method、filed等上面,相当于给他们添加了额外的辅助信息,可以通过反射机制编程实现对这些元数据的访问

常用注解

  • @Override 重写
  • @Deprecated 不推荐程序员使用,有更好的方法替代
  • @SuppressWarnings("all") 抑制警告

元注解

元注解用来管理我们自定义的注解

  • @Target 表示我们的注解可以用在哪些地方,表示注解的范围(TYPE,METHOD,FILED)
  • @Retention 表示我们的注解在什么地方有效(ROUSE<CLASS<RUNTIME)
  • @Documented 表示是否将我们的注解生成在JAVAdoc中
  • @Inherited 子类可以继承父类的注解

自定义注解

image.png

反射

image.png

获取Class对象的方式

image.png

哪些类型有Class对象

image.png

Java内存分析

image.png

方法区是一个特殊的堆。
一个类的初始化步骤:
1.类的加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时的数据结构,然后生成一个代表这个类的java.lang.Class对象
2.类的链接:将java类的二进制代码合并到jvm的运行状态之中的过程。


image.png

3.类的初始化


image.png

分析类的初始化,什么时候会发生类的初始化?

image.png

类加载器

image.png
image.png

获取类运行时结构

image.png

image.png

image.png

通过反射动态创建对象执行方法

image.png

image.png

通过反射获取泛型信息

image.png

通过反射获取注解信息

image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言## 最近一段时间在研究EventBus和Retrofit 的过程中,都遇到了注解这个概念。由于在学习Java...
    IAM四十二阅读 9,765评论 18 86
  • 一、注解 (一)注解定义 Annotation是从JDK5.0开始引入的技术 Annotation作用: 不是程序...
    知向谁边阅读 263评论 0 0
  • 1. 注解 注解入门 Annotation 是 JDK 5 开始引入的新技术。 Annotation 的作用:不是...
    yjtuuige阅读 1,237评论 1 12
  • 注解 Annotation是从JDK5开始引入的新技术 Annotation的作用 不是程序本身,可以对程序作出解...
    关阿狸阅读 223评论 0 0
  • 注解和反射 本笔记是在学习狂神说java的B站视频记录的。 什么是注解 Annotation是从JDK5.0开始引...
    Zeoytin阅读 253评论 0 0