Java反射-构造函数
时间:2020-01-09 14:20:02 来源:igfitidea点击:
使用Java Reflection,我们可以检查类的构造函数并在运行时实例化对象。这是通过Java类" java.lang.reflect.Constructor"完成的。本文将更详细地介绍有关JavaConstructor
对象的信息。
获取构造器对象
"构造函数"类是从"类"对象获得的。这是一个例子:
Class aClass = ...//obtain class object Constructor[] constructors = aClass.getConstructors();
对于在该类中声明的每个公共构造函数,Constructor []
数组将具有一个Constructor
实例。
如果知道要访问的构造函数的精确参数类型,则可以这样做,而不是获取所有构造函数的数组。此示例返回给定类的公共构造函数,该构造函数以String
作为参数:
Class aClass = ...//obtain class object Constructor constructor = aClass.getConstructor(new Class[]{String.class});
如果没有构造函数与给定的构造函数参数匹配,在这种情况下为String.class,则抛出NoSuchMethodException。
构造函数参数
我们可以像这样读取给定构造函数采用的参数:
Constructor constructor = ... // obtain constructor - see above Class[] parameterTypes = constructor.getParameterTypes();
使用构造函数对象实例化对象
我们可以像这样实例化一个对象:
//get constructor that takes a String as argument Constructor constructor = MyObject.class.getConstructor(String.class); MyObject myObject = (MyObject) constructor.newInstance("constructor-arg1");
" Constructor.newInstance()"方法采用可选数量的参数,但是我们必须在要调用的构造函数中为每个参数提供一个参数。在这种情况下,它是一个采用String的构造函数,因此必须提供一个String。