当当当当~~~~ 欢迎大家阅读,今天我们一起来学习反射思想
一、 什么是反射
反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。
二、 反射机制的优缺点 (1)优点可以动态执行,在运行期间根据业务功能动态执行方法、访问属性,最大限度发挥了java的灵活性。
(2)缺点对性能有影响,这类 *** 作总是慢于直接执行java代码。
三、Java反射机制的作用(1)运行时判断任意一个对象所属的类
(2)在运行时构造任意一个类的对象
(3)在运行时判断任意一个类所具有的成员变量和方法
(4)在运行时调用任意一个对象的方法
四、如何使用Java的反射 (一)获取Class类的对象 (1)为什么要获取Class类的对象
我们要想通过反射去使用一个类,首先我们要获取到该类的字节码文件对象,也就是类型为Class类型的对象
(2)三种方式获取Class类型的对象1:使用类的Class属性来获取该类对应的Class对象,举例:Student.class将会返回Student类对应的Class对象,最方便
2:调用对象的getClass( )方法,返回该对象所属类对应的Class对象,该方法是Object类中的方法,所有的Java对象都可以调用该方法
3:使用Class类中的静态方法forName(String className),该方法需要传入字符串参数,该字符串参数的值是某个类的全路径,也就是完整包名的路径,灵活性更高
(二)反射获取构造方法 (1)Class类中用于获取构造方法的方法
1:Constructor>[]getConstructors():返回所有公共构造方法对象的数组
2:Constructor>[]getDeclaredConstructors():返回所有构造方法对象的数组
3:Constructor
4:Constructor
T newInstance(Object...initargs):根据指定的构造方法创建对象
(三)反射获取成员变量 (1)Class类中用于获取成员变量的方法1:Field[]getFields( ):返回所有公共成员变量对象的数组
2:Field[]getDeclaredFields( ):返回所有成员变量对象的数组
3:Field getField(String name ):返回单个公共成员变量对象
4:Field getDeclaredField(String name ):返回单个成员变量对象
(2)Constructor类中用于给成员变量赋值的方法void set(Object obj,Object value):给obj对象的成员变量赋值为value
(四)反射获取成员方法 (1)Class类中用于获取成员方法的方法1:Method[]getMethods():返回所有公共成员方法对象的数组,包括继承的
2:Method[]getDeclaredMethods():返回所有成员方法对象的数组,不包括继承的
3:Method getMethod(String name,Class>...parameterTypes):返回单个公共成员方法对象
4:Method getDeclaredMethod(String name,Class>...parameterTypes):返回单个成员方法对象
(2)Method类中用于调用成员方法的方法Object invoke(Object obj,Object...args):调用obj对象的成员方法,参数是args,返回值是Object类型
以上就是反射思想的内容啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)