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