Constructor<T>对象
构造器对象,属于java.base模块,java.lang.reflect包中
getConstructor(Class <?>... parameterType) //返回公共构造方法
getDeclaredConstructor(Class <?>... parameterType) //返回私有构造方法
getConstructors() //返回所有构造方法,但不包括私有狗杂方法
String getName() //返回构造方法名
T newinstance(Object... initargs) //使用此构造函数和指定参数创建并初始化对象
Student.java
package Demo01; ? import java.lang.reflect.Constructor; ? ? /** * @author :K; */ public class Student { ? public Student() { ? } public Student(String name){ System.out.println("输入的姓名为:"+name); } private Student(int age){ System.out.println("你的年龄为:"+age); } }
?
Reflect_GetConstructor.java
package Demo01; ? import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; ? public class Reflect_GetConstructor { ? public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { //1.获取Student类的字节码文件对象 //2.根据字节码文件对象,获取指定的构造器对象 //3.根据构造器对象和参数,创建对应的Student对象 Class aClass = Class.forName("Demo01.Student"); System.out.println(aClass.getName()); ? //获取公共的无参构造 Constructor constructor01 = aClass.getConstructor(); System.out.println(constructor01); //获得公共的有参构造 Constructor constructor02 = aClass.getConstructor(String.class); System.out.println(constructor02); //获取私有的有参构造 Constructor declaredConstructor = aClass.getDeclaredConstructor(int.class); System.out.println(declaredConstructor); ? //获取所有的构造方法,除去私有的构造方法 Constructor[] constructors = aClass.getConstructors(); for(Constructor constructor:constructors){ System.out.println(constructor); } System.out.println("-------------"); //构造器对象 System.out.println(constructor01); String name = constructor01.getName(); //构造器的名字 System.out.println(name); //根据构造器对象和参数,创建对应的Student对象 Student stu = (Student) constructor02.newInstance("李白"); //打印输出结果 System.out.println(stu); ? } }
?
原文:https://www.cnblogs.com/kkwt/p/14300812.html