• java反射技术

  • 概念
    对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意方法和属性。
    这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射属于Java动态特性中的一员,其他的还包括(注解、动态代理、类加载器等)。
    Java反射是框架设计的灵魂。
    在平时的项目开发中,我们好像基本没有使用到反射机制,但没有用到不代表没有用。
    在设计模式中,有一种模式叫做动态代理设计模式,它就采用了反射机制。
    Spring / MyBatis等框架就大量的使用到了反射机制。
    JDBC连接MySQL数据库时使用的Class.forName(“com.mysql.jdbc.Driver”);就是通过反射加载数据库的驱动程序。

  • 优点:
    反射提高了程序的灵活性和扩展性,降低耦合性,提高自适应能力。它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

  • 缺点:
    性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和扩展性要求很高的系统框架上,普通程序不建议使用。
    使用反射会模糊程序内内部逻辑:反射等绕过了源代码的技术,因此会带来维护问题。反射代码比相应的直接代码更加复杂。
    安全问题:反射会暴漏类的所有细节,不安全。

  • Java反射相关的类有:
    类 描述

  1. Class类: 代表类的实例表示正在运行的Java应用程序中的类和接口。
  2. Field类: 代表类的成员变量(属性、字段)。
  3. Method类: 代表类的方法。
  4. Constructor类: 代表类的构造方法。