目录
[1.Class ---类完整结构信息](#1.Class —类完整结构信息)
[2.Constructor ---类构造器结构信息](#2.Constructor —类构造器结构信息)
反射类
反射类是 类结构信息 反射获取并使用 的**泛型类**
一、泛型参数
泛型类 将类里面的 类类型 作为参数,++类结构++ 实现时 传具体的类类型,让泛型类里面的 类类型参数 模套地给上 对应具体有意义的类型 ,实现 类在结构上 用类类型实现的 泛型化
- <>里传入 要反射获取结构信息的类 ,它的确定 ++使反射类的类型结构 确定下来++
二、反射类类型
反射类类型 会对应不同的泛型类 不同的类结构 ,对应会反射出 类不同模块的 结构信息
三、实例化
1.实例化材料
反射类实例化需要 类的类型信息(这里是++需要获取结构信息的 传的参数类 的类型++ ,而++反射类类型不需要++ ,因为它是一直都提供 已知的)与类对应模块的结构信息
2.结构信息可使用化
反射类****对身上带的 ++导入模块结构信息++ 的 ++已知类类型++的 类 反射获取创建****出 对应的独立出来可使用的 类模块结构信息 存储放入 此对应类的 结构模块的反射类的 实例对象中,++有了实例对象 ,才可实现 对已获取到的 类结构信息 进行使用++
四、使用
1.Class<T>---类完整结构信息
1.1Class<类>实例化
每一个类运行时,在JVM上都获取有 ++类的完整结构信息++ ,配合已知的 ++类的类型信息++ ,反射类Class<类>都会在JVM上 有且只有一个地 创建出 Class<类>的 存储有可使用的 ++类完整结构信息++ 的 实例对象
1.2Class<类>实例获取
1.2.1Class类静态获取:
Class.forName("类的全路径");
---> return Class<类>
调用反射类Class(未传入类类型的 最初始反射类Class<T>)里的静态方法 根据类的路径找到该类 得到它的++类类型++ ,再结合JVM上获取的该++类结构信息++ 创建Class<类>反射类 的实例化对象
1.2.2信息类静态获取
类变量.class;
---> return Class<类>
调用此信息类里面的静态方法 获取该类对应的 Class<类>反射类的实例对象
1.2.3信息类非静态获取
类实例对象.getClass();
---> return Class<类>
调用此信息类里面的非静态方法 获取该类对应的 Class<类>反射类的实例对象
1.3信息类实例化
class<类>.newInstance();
---> return 类的实例对象
有了Class<类>反射类的 实例对象,就可以使用 它身上带有的完整类结构的信息,就可以用它 创建信息类的实例对象
1.4分配导信息
有了Class<类>反射类的 实例对象,就可以分配 其它模块结构的信息 导给其它结构模块的反射类 就可以创建出 其它模块结构的 反射类实例对象 ,进行对类其它结构信息的 使用与操作:
2.Constructor<T>---类构造器结构信息
1.4.1Constructor<类>实例获取
class<类>.getDeclaredConstructor(形参类型字段);
---> return Constructor<类>
反射类Class<类>实例对象 用它里面已有的 类的指定构造器的 模块结构信息,导入 对应类类型的 反射类Constructor<类>中,Constructor<类>创建出 可使用操作里面存的 该类的 指定构造器结构信息的 实例化对象
2.1信息类的实例化
constructor<类>.newInstance(形参);
---> return 类的实例对象
反射类Constructor<类> 对应该类类型、获取到 对应该类的 指定构造器模块结构信息后 创建出的实例对象constructor<类>,它使用里面 此类的构造器结构信息 进行实例化此类的实例对象
3.Field---类成员变量结构信息
1.4.2Field实例获取
class<类>.getDeclaredField("成员名");
---> return Field
反射类Class<类>的实例对象 用它里面已有的 类的指定成员变量的 模块结构信息,导入 对应类类型的 反射类Field中,Field创建出 可使用操作里面存的 该类的 指定成员变量结构信息的 实例化对象
3.1修改
field.set(类的实例对象,成员变量参数);
---> return void
反射类Field 对应该类类型、获取到 对应类的 指定成员变量模块结构信息后 创建出的实例对象field,它使用里面 该类的该成员变量的结构信息 对该类的实例对象的该成员变量 进行赋值修改
4.Method------类成员方法结构信息
1.4.3Method实例获取
class<类>.getDeclaredMethod("方法名",形参类型字段);
---> return Method
反射类Class<类>的实例对象 用它里面已有的 类的指定方法的 模块结构信息,导入 对应类类型的 反射类Method中,Method创建出 可使用操作里面存的 该类的指定方法结构信息的 实例化对象
4.1调用
method.invoke(类的实例对象,方法参数);
---> return void
反射类Method 对应该类类型、获取到 对应该类的 指定方法模块结构信息后 创建出的实例对象method,它使用里面 该类的该方法的结构信息 对该类的实例对象 进行方法的调用
5.私有信息的获取与使用(说明)
1.Declared获取
class<类>.getDeclared**(**);
---> return 局部模块结构的反射类实例
Class<类>实例 在私有模块结构信息类 的类外 将它里面存的 此模块结构信息 共有地全部导入 对应类的模块反射类上 来创建 模块反射类实例
2.setAccessible设置
局部模块结构的反射类实例.setAccessible(true);
---> return void
将此反射类实例 获得到的类模块结构信息 全部设置成共有化,之后就可 在私有模块结构信息类 的类外 全部公有化地使用它们了