Java安全基础——反射

前言:Java反射(Reflection)是Java非常重要的动态特性,通过使用反射我们不仅可以获取到任何类的成员方法(Methods)、成员变量(Fields)、构造方法(Constructors)等信息,还可以动态创建Java类实例、调用任意的类方法、修改任意的类成员变量值等。Java反射机制是Java语言的动态性的重要体现,也是Java的各种框架底层实现的灵魂

1:获取class对象的四种方式

(1)类名.class,如:com.anbai.sec.classloader.TestHelloWorld.class

(2)Class.forName("全类名")

(3)ClassLoader.loadClass("com.anbai.sec.classloader.TestHelloWorld");

(4)对象.getClass();

2:利用反射来获取构造方法

(1)getConstructor(参数类型列表)//获取公开的构造方法

(2)getConstructors()//获取所有的公开的构造方法

(3)getDeclaredConstructors()//获取所有的构造方法,包括私有

(4)getDeclaredConstructor(int.class,String.class)//获取指定的

3:利用反射来获取成员变量

(1)getFields()//获取所有公开的成员变量,包括继承变量

(2)getDeclaredFields()//获取本类定义的成员变量,包括私有,但不包括继承的变量

(3)getField(变量名)//获取指定公共属性的Field对象

(4) getDeclaredField(变量名)//获取指定包括私有,不包括继承的Field对象

注意:获取成员变量的值时,如果是非静态成员变量,必须传入对象实例,因为我们要知道调用的是哪个对象的值,静态变量时传入null即可

4:利用反射来获取成员方法

(1)getMethods()//获取所有可见的方法,包括继承的方法

(2)getMethod(方法名,参数类型列表)//获取指定方法的Method对象

(3)getDeclaredMethods()//获取本类定义的的方法,包括私有,不包括继承的方法

(4)getDeclaredMethod(方法名,int.class,String.class)//获取指定包括私有,不包括继承的Method对象

注意:获取调用成员方法时,如果是非静态成员方法,必须传入对象实例,因为我们要知道调用的哪个对象里面的方法,静态方法时传入null即可

实践操作

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值