反射获取构造方法并使用1

Class类在java.lang包下。该类的泛型是。该类被final修饰,所以该类是最终类。该类继承自Object类,实现了多个接口

Class类的实例表示正在运行的Java应用程序中的类和接口

即在反射里面,把一个学生类里面的成员变量、构造方法、成员方法都看成一个个对象

 

该类的创建对象的方法有: 1、构造器<?>[] getConstructors() 返回一个包含构造器对象的数组,构造器对象反映了此类对象所表示的类的所有公共构造函数。即只获取学生类的公共构造方法 2、构造器<?>[] getDeclaredConstructors() 返回构造器对象的数组,构造器对象反映由此类对象表示的类声明的所有构造函数。即获取学生类的所有构造方法 3、构造器 getConstructor(类<?>... parameterTypes) 返回一个构造器对象,该对象反映此类对象所表示的类的指定公共构造函数。即只获取学生类的公共构造方法中的某个 4、构造器 getDeclaredConstructor(类<?>... parameterTypes) 返回一个构造器对象,该对象反映此类对象所表示的类或接口的指定构造函数。即获取学生类的所有构造方法中的某个

 

上面的getConstructor和getDeclaredConstructor方法是有两个。第一个参数表示要获取的构造方法的个数。第二个参数表示数据类型对应的字节码文件对象,或者理解为.class文件对象

 

学习一下构造方法的类,即Constructor类

该类的泛型是,即该类也是泛型类。该类在java.lang.reflect包下,所以使用该类需要导包

该类被final修饰,所以该类是最终类。该类继承自Executable类

该类的作用是提供了一个类的单个构造函数的信息和访问权限

该类的创建对象的方法有:

方法作用
T newInstance(Object... initargs使用此构造器对象表示的构造方法,使用指定的初始化参数创建和初始化构造函数声明类的新实例

 

总结: 使用反射来创建对象,有两个类可实现,如下

1、Class类中用于获取构造方法的方法有4个

2、Constructor类中用于创建对象的方法有1个

 

反射获取构造方法并使用1的练习

 

反射获取构造方法并使用2

练习1:通过反射实现如下操作,即使用反射来达到下面的效果 1、Student s = new Student("张三",18,"福建"); //带三个参数的构造方法,先在我们的学生类里面准备一个带3个参的公共构造方法 2、System.out.println(s);

基本数据类型也可以通过.class得到对应的class类型

 

反射获取构造方法并使用2的练习

 

反射获取构造方法并使用3

练习2:通过反射实现如下操作 1、Student s = new Student("张三"); 2、System.out.println(s);

如何获取只有一个参数的私有构造方法的对象,写法:暴力反射 void setAccessible(boolean flag) 将此反射对象的accessible标志设置为指示的布尔值。当值为true,取消访问检查

 

反射获取构造方法并使用3的练习