Java/reflection-where';什么是错误?
我在这个网站上找到了一些关于java/reflection的帖子。但还是不明白。有人能告诉我代码中的错误在哪里吗?(需要打印“你好!”) 输出:Java/reflection-where';什么是错误?,java,reflection,Java,Reflection,我在这个网站上找到了一些关于java/reflection的帖子。但还是不明白。有人能告诉我代码中的错误在哪里吗?(需要打印“你好!”) 输出: java.lang.NoSuchMethodException: Caller.foo() 这是我的Main.java: import java.lang.reflect.*; class Main { public static void main(String[] args) { Caller cal = new Ca
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!");
}
}
仅查找public
方法。将Caller#foo()
方法的访问修饰符更改为public
,或者改用。是的,foo()
的范围是包私有的(没有显式修饰符)耶!getDeclaredMethod()-因为我需要将这两个类保留在同一个文件中。
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!");
}
}