栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-反射思想

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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类型

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/667066.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号