利用反射来获取构造函数,主要是有四种方法:
(1) getConstructors()用来获取所有的公开构造方法的列表
(2 )getConstructor(参数列表)根据参数类型来获取公开的构造方法
(3)getDeclaredConstructors()用来获取在类中真正声明的构造方法,而会忽略从父类中继承下来的构造方法
(4)getDeclaredConstructor(参数列表)根据参数类型来获取类中真正声明的构造方法,而会忽略从父类中继承下来的构造方法
利用反射的构造函数来创建类的实例主要是有两种方式:
一、利用无参数的构造函数创建实例
1、1 先获得Class对象,然后通过该Class对象的newInstance()方法直接生成即可:
Test haha=Test.class.newInstance();//Test是一个类
1.2 先获得Class对象,然后通过该对象获得对应的Constructor对象,再通过该Constructor对象的newInstance()方法生成:
Constructor cons=Test.class.getConstructor(new Class[]{});
Object obj=cons.newInstance(new Object[]{});
二、利用有参数的构造方法创建示例仅有一种
Class<?> classType = Test.class;//Test是一个类
Constructor cons = classType.getConstructor(new Class[]{String.class, int.class});
Object obj = cons.newInstance(new Object[]{“hello”, 3});