我在这个网站上发现了一些关于java / reflection的帖子。但还是听不懂东西。谁能告诉我代码中的错误? (需要打印“你好!”)
输出:
java.lang.NoSuchMethodException: Caller.foo()
这是我的Main.java
:
import java.lang.reflect.*;
class Main {
public static void main(String[] args) {
Caller cal = new Caller();
Method met;
try {
met = cal.getClass().getMethod("foo", new Class[]{});
met.invoke(cal);
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
class Caller {
void foo() {
System.out.println("HELLO!");
}
}
答案 0 :(得分:8)
getMethod()
仅查找public
种方法。将Caller#foo()
方法的访问修饰符更改为public
,或使用getDeclaredMethod()
代替。
答案 1 :(得分:0)
import java.lang.reflect.*;
public static void main(String[] args) {
public static void main(String[] args) {
try {
Class c = Class.forName("Caller");
Object obj = c.newInstance();
Method m = c.getMethod("foo");
m.invoke(obj);
} catch (Exception e) {
System.out.println(e.toString());
}
}
}
public class Caller {
public void foo() {
System.out.println("HELLO!");
}
}