1

给定班级奖:

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

怎么了 ?

谢谢 !

4

2 回答 2

9

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

于 2012-05-08T05:37:06.430 回答
2

根据Javadoc

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

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

于 2012-05-08T05:37:10.003 回答