Java基础反射---并没那么难系列【三】

1.发射概述

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

2.反射的使用

本文只讲具体的一个方法使用 实例可参照本文:反射

2.1.获取Class类的对象的三种方式

2.1.1.方式一

源代码时期 -> .class文件还没有加载到内存中.
Class.forName(“类的全限定类名”); Class.forName(“com.demo.Student”)

2.1.2.方式二

类加载时期ClassLoader -> 类名.class

2.1.3.方式三

Runtime运行期 -> 对象.getClass(); 来获取对象所在类的class对象

2.2.使用反射获取多个参数构造方法并使用+使用反射获取私有构造方法并使用

这里我们两个一起说

2.2.1.方式一(getXXX/getDeclaredXXX)

获取构造器 -> 构造方法的参数列表来进行判断具体要获取哪个的.

public Student(String name,int age){}
getDeclaredConstructor(String.class,int.class)
2.2.2.方式二(getXXXs/getDeclaredXXXs)

a.获取所有被public修饰的构造方法.
b.获取所有的构造方法

2.2.3.方式三(Constructor -> 构造器对象)
newInstance("张三",19);
2.2.4.方式四(暴力反射)

通过Constructor对象的setAccessible(true)设置暴力反射.

2.3.使用反射获取不同访问修饰的成员变量并使用

2.3.1.方式一(getXXX/getDeclaredXXX)

a.根据成员变量名进行成员变量对象(Filed)的获取,只能获取public修饰的.
b.根据成员变量名进行成员变量对象(Filed)的获取,可以获取任意修饰符修饰的成员变量对象.

2.3.2.方式二(getXXXs/getDeclareds)

a.获取所有被public修饰的成员变量对象.
b.获取所有的成员变量对象.

2.3.3.方式三(Filed -> 成员变量)

a.获取成员变量的值(get(Object o); -> 获取对象o的这个成员变量的值)
b.设置成员变量的值(set(Object o,Object value) -> 参数1:指定要被设置成员变量的对象,参数2:具体设置的值)

2.3.4.方式四(设置暴力反射)

通过Filed对象的setAccessible(true)设置暴力反射

2.4.使用反射获取带参带返回值的方法使用

2.4.1.方式一(通过什么参数去获取指定的成员方法)

方法名+参数列表

2.4.2.方式二
public void show(String name){}
public void method(String name){}
2.4.3.方式三
cls.getDeclaredMethod("method",String.class)
2.4.4.方式四

Method -> 要调用成员方法就必须指定哪个对象调用成员方法

2.4.5.方式五
method.invoke(Object o,Object...)

2.5.使用反射越过泛型检查

暴力反射

2.6.使用反射运行配置文件指定内容

2.6.1.方式一(getXXX/getDeclaredXX)

a.根据成员变量名进行成员变量对象(Filed)的获取,只能获取public修饰的.
b.根据成员变量名进行成员变量对象(Filed)的获取,可以获取任意修饰符修饰的成员变量对象.

2.6.2.方式二(getXXXs/getDeclareds)

a.获取所有被public修饰的成员变量对象.
b.获取所有的成员变量对象.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值