Java/reflection-where';什么是错误?

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/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!");
    }
}
仅查找
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!");
    }
}