Java-反射思想

Java-反射思想,第1张

Java-反射思想

当当当当~~~~ 欢迎大家阅读,今天我们一起来学习反射思想

 

一、 什么是反射

       反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 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[]getConstructor(Class...parameterTypes):返回单个公共构造方法对象

4:Constructor[]getDeclaredConstructor(Class...parameterTypes):返回单个构造方法对象

(2)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类型

以上就是反射思想的内容啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5672327.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存