反射是什么?

反射

  • 是一种底层技术,通常用于底层框架的编写

类对象-Class

  • 类的对象:是类实例化的产物,可以存在多个

  • 类对象:包含着类的所有信息,如属性、方法、构造、父类信息、接口信息等,是类加载的产物,通常只有一个

获取

  1. 类名.class

     Class<Student> c1 = Student.class;
  2. 引用名.getClass()

    Student stu = new Student();
    Class c2 = stu.getClass();
  3. Class.forName("全限定名")

    Class c3 = Class.forName("com.bz.entity.Student");

常用方法

  1. newInstance():利用无参构造构建类的实例对象

  2. Constructor<?> getDeclaredConstructor(形参的类对象):获取指定形参列表的有参构造器对象

    • 构造器对象.newInstance(实参列表):通过指定有参构造器构建类的实例对象

//利用c1对构建类的实例
        Student stu1 = c1.newInstance();
        //利用c3构建类的实例
        Student stu2 =(Student) c3.newInstance();
​
        //获取全属性的有参构造器对象
        Constructor<Student> con = c1.getDeclaredConstructor(String.class, int.class, double.class);
        //构建一个学生对象实例
        Student stu3 = con.newInstance("zhangsan", 20, 98.0);

优缺点

  1. 优点:

    • 打破封装

    • 提升代码的扩展性

  2. 缺点:

    • 打破封装

    • 代码可读性变差

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值