繁体   English   中英

Java反射,getMethod()

[英]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

这是我用来从我的main函数读取类的函数,然后我想使用参数“test”和null得到getMethod(),其中“test”是方法的名称,null表示该方法没有参数。 我正在读的课叫做myclass2,在这里:

package a8;

public class myclass2 {

    void test(){
        //"takes no parameters"
        //"returns bool"
        //"name starts with test"
        //return true;
    }

}

如您所见,该方法确实存在于类中。 如果你能指出我的错误,我会非常感激。

让您的测试方法公开。 我相信Class.getMethod()仅限于公共方法。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM