在Java中,这称为
Reflection。
假设类有这个构造函数,否则你会得到一个NoSuchMethod异常我相信。
clazz.asSubclass(asSubclassOfClass)
.getConstructor(String.class,XYZ.class)
.newInstance("howdy",XyzObj);
由于您是Java的新手,让我更轻松一些,这样您就可以了解在执行此操作的过程中发生了什么。
假设你有以下类:
public class ParentClazz{
String someVar;
public ParentClazz(){
someVar="test";
}
public ParentClazz(String someVar){
System.out.println("I have been invoked");
this.someVar=someVar;
}
}
那么你有以下主要方法:
public static void main(String[] args) throws ParseException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
ParentClazz.class.asSubclass(ParentClazz.class).getConstructor(String.class).newInstance("howdy");
}
如果你运行它,你会注意到控制台输出打印消息 – 我已被调用。这意味着使用反射您已经调用了ParentClazz的构造函数。
如果场景允许您通过使用标准对象创建过程,则可以执行相同的操作:
ParentClazz clazz = new ParentClazz("howdy");
希望这有助于您了解它。