我有一个类 Foo 如下:
public class Foo extends Bar
{
public Foo(com.example.X displayState, com.example.Y parent)
{
super(displayState, parent);
}
}
Bar 类如下所示:
public abstract class Bar {
public Bar(com.example.X displayState, com.example.Y parent)
{
// do something with received params
}
}
此外,还有一个具有以下方法的工厂类:
public static Object getInstance(Class theSourceClass, Class theTargetClass, Class[] parameterClasses, Object[] parameterValues)
{
Class theClass = (theTargetClass == null) ? theSourceClass : theTargetClass;
try
{
Constructor classConstructor = theClass.getConstructor(parameterClasses);
return classConstructor.newInstance(parameterValues);
}
catch (NoSuchMethodException exp)
{
// log
}
问题是NoSuchMethodException
总是会出现异常:
java.lang.NoSuchMethodException: com.example.Foo.<init>(com.example.X, com.example.Y)
at java.lang.Class.getConstructor0(Class.java:2715)
at java.lang.Class.getConstructor(Class.java:1659)
at com.example.MyFactory.getInstance(MyFactory.java:30)
我已经调试了代码,并且类信息具有有关已定义构造函数的正确详细信息;但是,这里是例外。
有人知道错过了什么吗?谢谢!