鉴于课程奖励:
public class Award {
/*
*
*/
// fields of the class
Award()
{
// some initializations
}
我正在尝试从Main调用此构造函数:
try
{
Award myAward = Award.class.getConstructor().newInstance();
myAward.calculateAward();
}
catch (Exception e)
{
e.printStackTrace();
}
但它进入异常块并产生NoSuchMethodException异常。
怎么了?
谢谢!
答案 0 :(得分:9)
问题是您的构造函数不是public
所以您需要使用getDeclaredConstructor().newInstance();
或制作构造函数public
。
答案 1 :(得分:2)
根据Javadoc:
要反映的构造函数是此Class对象所表示的类的公共构造函数,其形式参数类型与parameterTypes指定的类型匹配。
您的构造函数可能需要公开。在public
构造函数之前添加Award
关键字,然后重试。