目录
🌟反射
🌈 1. 获取class对象的三种方式
🌈 2. 反射获取构造方法
🌈 3. 反射获取成员变量
🌈 4. 反射获取成员方法
🌟反射
反射是非常重要的,没有反射就没有java的任何框架。我们在java中写代码IDEA会自动提示的功能也是利用了反射。反射允许对成员变量,成员方法和构造方法的信息进行编程访问。简单来说,就是可以从类中获取到成员变量,成员方法,构造方法。不过在获取之前,要先获取class对象。所以我们先俩看一下获取对象的方式有哪些~
问题:在java中创建一个对象有几种方式?
new clone 反射 序列化
🌈 1. 获取class对象的三种方式
Class类是反射的核心类,反射的入口。在JVM中,每个类都有一个唯一的class对象来描述该类的属性或者方法等。每个类的class对象有且只有一个,由JVM产生。每个类加载到JVM之后,由JVM产生这个类的class对象。
程序获取class对象的三种方式:
(1)Class.forName("类的全名称") -> 最为常用
(2)类名称.class -> 一般是当做参数进行传递
(3)对象.getClass() ->当已有这个类的对象时,才可以使用
代码演示;
🌈 2. 反射获取构造方法
Class类中用于获取构造方法的方法:
Constructor类中创建对象的方法:
(1) | T newInstance(Object...initargs) |
(2) | setAccessible(boolean falg) |
代码演示:
🌈 3. 反射获取成员变量
Class类中用于获取成员变量的方法:
方法 | 用途 |
Field getField(String name) | 返回单个公共的成员变量对象 |
Field[] getFields() | 返回所有公共成员变量对象的数组 |
Field getDeclaredField(String name) | 返回单个成员变量对象 |
Field[] getDeclaredFields() | 返回所有成员变量对象的数组 |
Filed类中用于创建对象的方法
(1) | void set(Object obj,Object value); |
(2) | Object get(Object obj); |
代码演示:
🌈 4. 反射获取成员方法
Class类中用于获取成员方法的方法:
方法 | 描述 |
Method getMethod(String name,Class<?>...ParameterTypes) | 返回单个公共成员的方法对象 |
Method getDeclaredMethod(String name,Class<?>...ParameterTypes) | 返回单个成员方法对象 |
Method[] getMethods() | 返回所有 公共成员方法对象的数组,包括继承的 |
Method[] getDeclaredMethods() | 返回所有成员方法对象的数组,不包括继承的 |
Method类中用于创建对象的方法:
Object invoke(Object object,Object...args) :运行方法 | |
(1) | 参数1:用object对象调用该方法 |
(2) | 参数2:覅用方法的传递参数,如果没有就不写 |
代码演示:使用到的Student类
获取方法:
文章来源:https://www.toymoban.com/news/detail-433877.html
文章来源地址https://www.toymoban.com/news/detail-433877.html
到了这里,关于【数据结构】反射的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!