【视频笔记】Java注解与反射(狂神)

Java注解与反射

是框架的底层
注:给人看
解:给程序看
注解是有功能

1. 什么是注解

作用

  1. 不是程序本身
  2. 可以对程序做做出解释
    1. 可以被其他程序读取

格式

  1. @注释名
  2. 可以加一些参数值

2. 内置注解

  1. 重写
  2. 废除,不推荐使用
  3. 抑制警告
    1. 有参数

3. 元注解

  1. 用来注解其他注解的注解
  2. 有四个

4. 自定义注解

5. 反射概述

静态 动态语言

  1. 动态语言
    1. 在程序运行时可以改变程序某些内容
  2. 静态语言

反射机制

  1. 在程序执行期间,
    1. 取得类的内部信息
    2. 可以操作对象的方法/属性
  2. 在类加载完后,内存堆区会产生一个Class类型对象
    1. 通过这个对象能看到类的信息
  3. 通过Class来实现

6. 获得反射对象

反射的优点

  1. 灵活

缺点

  1. 通过反射相当于通过JVM
  2. 比正常执行多走了一步

获得反射对象

  1. 在main线程中
    1. Class.forName(“包名”)
    2. 会返回一个Class对象
    3. 加载这个类
  2. 一个类在内存中只有个对象
  3. 对象.getClass 获取一个Class对象

7. 得到Class类的几种方式

  1. Class c =
    1. Class.forName(“包名”)
    2. 对象.getClass
    3. 类名.class
    4. 内置类.Type

8. 所有类型的Class对象

  1. class外部类
  2. 接口
  3. 数组
  4. 枚举
  5. 注解
  6. 基本数据类型
  7. void

9. 类加载内存分析

Java内存

    1. new的对象和数组
    2. 可以被别的线程共享
    1. 基本类型
    2. 引用类型
  1. 方法区
    1. 可以被所有的线程共享
    2. 包含了所有的class和static变量

类的加载过程

  1. 加载
    1. 把类的Class文件字节码读进内存
    2. 转化成很多运行时的数据结构
    3. 创建一个Class对象
    4. 由类加载器完成
  2. 链接
    1. 验证之前的操作没有问题
    2. 给static分配内存,并设初值
  3. 类初始化
    1. JVM负责

内存图,步骤顺序

  1. 方法区(也是堆,特殊的堆)
    1. 类的数据全部加载进来
    1. 生成类对应的Class对象
    2. 生产其他new出来的的对象A
    3. 通过Class的数据,把A初始化
    1. 把被操作的数据复合起来,视为一个总的操作
    2. 类构造器的一个方法

10. 分析类初始化

什么时候发生类的初始化

  1. 主动引用发生类的初始化
    1. new
    2. JVM启动,初始化main所在的类
    3. 调用类的静态成员、方法
    4. 初始化一个类时,它的父类
    5. 反射时
  2. 被动引用,不发生类的初始化
    1. 通过子类调用父类的静态变量
    2. 数组
    3. 常量

11. 类加载器

过程

  1. .java -> .class
  2. 类加载器 ->校验器,解释器,操作系统

类加载器作用

  1. class对象,在类加载时创建
  2. 类加载之后,有缓存,维持一定时间不用会被类加载器清掉

类加载器种类

  1. 引导 类加载器
    1. 用来加载核心类
    2. rt.jar
  2. 扩展 类加载器
    1. 加载另一个jar包
    2. ext文件夹下
  3. 系统 类加载器
    1. 项目里的jar包

java中的包

  1. jre目录下lib
  2. rt.jar
  3. ext文件夹下

12. 获取类的运行时结构

13. 动态创建对象执行方法

14. 性能对比分析

15. 获取泛型信息

16. 获取注解信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值