反射

1.反射

反射在我们日常的开发中经常使用,尤其在开发框架中更是有着不可替代的作用,我们在框架基础上运行我们的程序,必须通过配置文件把我们的程序加载到正在运行的框架中

1.1反射的概念

反射就是把java类的每个信息变成j一个java类,所以存在java文件有字节码类(Class),构造方法有构造方法类,java方法有一个方法类(Method),java属性则有属性类(Field)等等

1.2字节码(Class)

怎么得到一个java文件的字节码对象,一般来说有如下三种方法:
  1. 直接用类名来得到(类名.class)
  2. 用该类的对象调用Object的getClass()方法(对象.getClass())
  3. 直接用Class里面的静态方法forName("")(Class.forName("")

1.2.1通过字节码对象得到这个字节码对象的对象

 我们一般生成一个对象都是通过new出来的,所以我们需要先得到这个字节码对象的构造方法对象,而构造方法分为有参和无参构造方法,然后通过构造方法对象得到这个类的对象


这里可能会有疑问,为什么字节码对象可以直接生成对象,由于开发者为了我们编写程序的简便性,他直接把无参构造方法生成对象的方法封装在Class类里面



1.3属性(Field)

属性对象我们可以用字节码对象来获得,我们可以操作任何访问权限的属性,我们还可以通过创建对象来操作已经获得的属性对象


1.4方法(Method)

这个类我们需要特别注意的一个方法是invoke(Object obj, Object... args),这个就是方法对象执行的方法,第一个参数就是执行这个方法的对象,后面的参数则是方法的参数
              //静态方法的得到,staticShow是静态方法的名称
Method method = clazz1.getMethod("staticShow");
               //该方法的第一个参数是固定的,则这个null必须要
method.invoke(null);



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值