首页 > 其他 > 详细

注解和反射学习

时间:2021-07-21 12:04:19      阅读:14      评论:0      收藏:0      [点我收藏+]

注解

  • 概念:顾名思义,与注释类似注释给人看,而注解可以给程序扫描读取信息
  • 作用:
    • 不是程序本身,可以对程序作出解析
    • 可以被其他程序读取
  • 自定义
    • 组成
      • 元注解
        1. @Target 作用目标
        2. @Retention 保留区域
        3. @Document 文档保存
        4. @Inherited 子类继承
      • @interface
      • 字段
        • 类型 + 字段名 如:String[] name()
        • 若字段名为 value() 使用的时候可以默认不写
        • 若追加default默认值 使用的时候不会要求必须填写字段值

反射

  • 概念
    • Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的反射机制。反射被视为动态语言的关键
  • 原理
    • 类在加载到JVM的过程中,会在JVM的方法区堆内存中存储类的信息,再在普通堆内存中生成类的class镜像作为方法区类的信息的访问入口
    • 类加载到虚拟机的过程为:
      • 加载 --> 连接 --> 初始化 --> 使用 --> 卸载
      • 加载:虚拟机提供的各种加载器,默认先加载环境所需要的类文件,如ext中的
      • 连接:
        1. 验证:检查代码符合虚拟机读取解析的规范
        2. 准备:内存准备 正式为类变量分配内存并设置默认值,该阶段在方法区堆内存进行
        3. 解析:虚拟机常量池的符号引用(常量名)替换为直接引用(地址)的过程
  • 获取
    • 全限类名获取
    • 对象获取
    • Class类的静态方法 Class.forName()加载获取
    • 内置基本类型 类名.Type获取
    • ClassLoader获取
  • 性能方面
    • 因为能获取所有类信息,功能强大,但性能能耗却很高
    • 在获取私有信息时,使用accessible(true)方法开启访问,性能能耗会降低

注解和反射学习

原文:https://www.cnblogs.com/MoonPiePlane/p/15037984.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!