java—从另一个类中通过字符串名调用另一个类中的函数

gopyfrb3  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(283)

问题
我试图通过名称(作为字符串)调用类中的方法。
这个 mso 对象具有方法 exampleMethodName .
这是有效的-我可以通过它的字符串名成功地调用函数。

String s1 = "test string 1";
String s2 = "test string 2";

CallToClass mso = new CallToClass();
mso.getClass().getDeclaredMethod("exampleMethodName", String.class, String.class).invoke(mso, s1, s2);

但是,当我把相同的代码块放在类中时,它就失败了。例外情况:

unreported exception java.lang.NoSuchMethodException; must be caught or declared to be thrown

示例代码

class CallToClass {

    public void CallToClass() {}

    public double exampleMethodName(String t1, String t2) {
        return 0.1;
    }

}

class CallFromClass {

    private String t1;
    private String t2;

    public void CallFromClass(String t1 , String t2) {
        this.t1 = t2;
        this.t2 = t1;
    }

    public void Compare() {
        CallToClass mso = new CallToClass();
        mso.getClass().getDeclaredMethod("exampleMethodName", String.class, String.class).invoke(mso, s1, s2);
    }
}

为什么会这样?我该怎么修?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题