第17章:随堂复习与企业真题(反射机制)

一、随堂复习

1. 反射的概述(熟悉)

  • Java给我们提供了一套API,使用这套API我们可以在运行时动态的获取指定对象所属的类,创建运行时类的对象,调用指定的结构(属性、方法)等。

  • API:

    • java.lang.Class:代表一个类

    • java.lang.reflect.Method:代表类的方法

    • java.lang.reflect.Field:代表类的成员变量

    • java.lang.reflect.Constructor:代表类的构造器

    • … …

  • 反射的优点和缺点

    • 优点:

      • 提高了Java程序的灵活性和扩展性,降低了耦合性,提高自适应能力

      • 允许程序创建和控制任何类的对象,无需提前硬编码目标类

    • 缺点:

      • 反射的性能较低

        • 反射机制主要应用在对灵活性和扩展性要求很高的系统框架上

      • 反射会模糊程序内部逻辑,可读性较差

  • 反射,平时开发中,我们使用并不多。主要是在框架的底层使用。

2. Class:反射的源头

  • Class的理解 (掌握)

    针对于编写好的.java源文件进行编译(使用javac.exe),会生成一个或多个.class字节码文件。接着,我们使用java.exe命令对指定的.class文件进行解释运行。这个解释运行的过程中,我们需要将.class字节码文件加载(使用类的加载器)到内存中(存放在方法区)。加载到内存中的.class文件对应的结构即为Class的一个实例。
  • 获取Class的实例的几种方式(前三种)

    • 类.class

    • 对象.getClass()

    • (使用较多)Class调用静态方法forName(String className)

    • (了解)使用ClassLoader的方法loadClass(String className)

  • Class 可以指向哪些结构。

    简言之,所有Java类型!
    (1)class:外部类,成员(成员内部类,静态内部类),局部内部类,匿名内部类
    (2)interface:接口
    (3)[]:数组
    (4)enum:枚举
    (5)annotation:注解@interface
    (6)primitive type:基本数据类型
    (7)void

3. 类的加载过程、类的加载器(理解)

  • 类的加载过程

    过程1:类的装载(loading)
    将类的class文件读入内存,并为之创建一个java.lang.Class对象。此过程由类加载器完成
    ​
    过程2:链接(linking)
    > 验证(Verify):确保加载的类信息符合JVM规范,例如:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值