反射


概念

Java的反射机制,是在程序运行时,可以动态获取任意一个类的属性和方法,或者获取一个对象所属的类,并通过获取到的方法,传入对象和参数进行调用


使用方法


获取一个类的类对象

1.如果在编写代码时, 指导类的名称, 且类已经存在, 可以通过 包名.类名.class 得到一个类的 类对象 
2.如果拥有类的对象, 可以通过 Class 对象.getClass() 得到一个类的 类对象 
3.如果在编写代码时, 知道类的名称 , 可以通过 Class.forName(包名+类名): 得到一个类的 类对象

获取一个类的构造方法

1.通过指定的参数类型, 获取指定的单个构造方法 getConstructor(参数类型的class对象数组)
2.获取构造方法数组 getConstructors(); 
3.获取所有权限的单个构造方法 getDeclaredConstructor(参数类型的class对象数组) 
4.获取所有权限的构造方法数组 getDeclaredConstructors();

获取Method

1.getMethod(String methodName , class.. clss)
根据参数列表的类型和方法名, 得到一个方法(public修饰的) 
2.getMethods(); 得到一个类的所有方法 (public修饰的) 
3.getDeclaredMethod(String methodName , class.. clss)
根据参数列表的类型和方法名, 得到一个方法(除继承以外所有的:包含私有, 共有, 保护, 默认) 
4.getDeclaredMethods(); 得到一个类的所有方法 (除继承以外所有的:包含私有, 共有, 保护, 默认)

获取Field

1. getDeclaredField(String filedName) 根据属性的名称, 获取一个属性对象 (所有属性) 
2. getDeclaredFields() 获取所有属性 
3. getField(String filedName) 根据属性的名称, 获取一个属性对象 (public属性) 
4. getFields() 获取所有属性 (public)

性能问题

反射会影响系统的性能,具体体现在getDeclaredFields()getFields()这两个方法,这两个方法在寻找类的成员或者方法时,是通过遍历方法区来获取的,因此被执行的次数越多,遍历的次数也越多,系统性能也因此降低


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值