33.反射

一、概述

IDEA中的对象是怎么知道类有哪些属性,哪些方法的呢?

通过反射技术对对象类进行解剖得到了类的所有成员和方法。

什么是反射?

可以利用反射在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方法,构造方法)。

使用反射操作类成员的前提是什么?

首先要获得该类字节码文件对象,也就是class对象。

反射在实际开发中的运用场景

开发IDE(集成开发环境),比如IDEA,Eclipse

各种框架的设计和学习 比如Spring,Hibernate,Struct,Mybaits....

总结:反射是框架设计的灵魂,能够让框架更具有通用性,灵活性。

二、获得class对象类的三种方式

方式1:通过类名.class获得。

方式2:通过对象名.getClass()方法获得。

方式3:通过Class类的静态方法forName获得

代码演示:

打印输出:

 总结:三个方式获取的为同一个class对象。

三、Class类常用方法

1.获得类名字符串:类名         String getSimpleName();

2.获得类全名:包名+类名       String getName();  

3.创建Class对象关联类的对象【依赖无参构造而存在】   T newInstance() ;  

代码演示:

 打印输出:

 

四、Class类中与Constructor相关的方法

//获取单个指定参数的构造方法
1. Constructor getConstructor(Class... parameterTypes)  
        * 根据参数类型获得对应的Constructor对象,按照构造方法的参数类型及顺序传入
        * 只能获得public修饰的构造方法
    
    public Student(int age,String name){}
 2. Constructor getDeclaredConstructor(Class... parameterTypes)
        * 根据参数类型获得对应的Constructor对象
        * 可以是public、protected、package-private、private修饰符的构造方法。
    
//获取所有符合条件的构造方法
 3. Constructor[] getConstructors()
       * 获得类中的所有构造方法对象,只能获得public的
 4. Constructor[] getDeclaredConstructors()
       * 获得类中的所有构造方法对象
       * 可以是public、protected、package-private、private修饰符的构造方法。

 代码演示:

打印输出:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值