使用反射调用构造函数会产生NoSuchMethodException

时间:2012-05-08 05:32:16

标签: java reflection constructor

鉴于课程奖励:

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异常。

怎么了?

谢谢!

2 个答案:

答案 0 :(得分:9)

问题是您的构造函数不是public所以您需要使用getDeclaredConstructor().newInstance();或制作构造函数public

答案 1 :(得分:2)

根据Javadoc

  

要反映的构造函数是此Class对象所表示的类的公共构造函数,其形式参数类型与parameterTypes指定的类型匹配。

您的构造函数可能需要公开。在public构造函数之前添加Award关键字,然后重试。