Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从另一个类通过其字符串名调用另一个类中的函数_Java_Function_Callbyname - Fatal编程技术网

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

Java 从另一个类通过其字符串名调用另一个类中的函数,java,function,callbyname,Java,Function,Callbyname,问题 我试图通过名称(作为字符串)调用类中的方法 mso对象具有方法exampleMethodName 这是可行的-我可以通过字符串名成功调用函数 String s1 = "test string 1"; String s2 = "test string 2"; CallToClass mso = new CallToClass(); mso.getClass().getDeclaredMethod("exampleMethodName&quo

问题

我试图通过名称(作为字符串)调用类中的方法

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);
    }
}

为什么会这样?如何修复它?

我的坏更新看起来你忘了尝试/捕获
NoSuchMethodException
,作为检查异常,必须处理或声明这是必要的,即使我知道字符串总是映射到函数名?事实上,java强制你处理检查异常,请参阅,这是一个编译时错误,您应该在调用代码周围放置try/catch,或者在方法声明中添加
throws Throwable
(或任何子类)