Java Reflection, getMethod()



我正在研究Java反射的基础知识,并观察类的方法信息。我需要获得与getMethod()函数所描述的规范相匹配的方法。然而,当我这样做,我得到一个NoSuchMethodException,我希望你能告诉我为什么我的实现是不正确的。

static void methodInfo2(String className) throws ClassNotFoundException, 
NoSuchMethodException{
        Class cls = null;
        try{
            cls = Class.forName(className);
        } catch(ClassNotFoundException e){
            e.printStackTrace();
        }
        System.out.println("Cls:  "+cls);

        Method method1 = cls.getMethod("test", null);
        System.out.println("method1:  "+method1);

    }

EDIT1:当我打印"Cls: "+ Cls时,输出是"Cls: class a8.myclass2"。为什么要附加类部分?(a8是正确的,所以不用担心)/EDIT1

这是我用来从主函数中读取类的函数,然后我想使用参数"test"和null的getMethod(),其中"test"是方法的名称,null表示方法没有参数。我正在阅读的班级叫做myclass2,在这里:

package a8;
public class myclass2 {
    void test(){
        //"takes no parameters"
        //"returns bool"
        //"name starts with test"
        //return true;
    }
}
如您所见,方法实际上存在于类中。如果你能指出我的错误,我将不胜感激。

将测试方法设为public。我认为Class.getMethod()仅限于公共方法

如果没有发布确切的异常和输出,很难判断,但我怀疑这是因为类在两个单独的包中,并且由于方法的默认修饰符只是protected,因此失败了。

使用getDeclaredMethod()获取通常不可见的方法

相关内容

  • 没有找到相关文章

最新更新