Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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_Reflection_Rmi_Rpc - Fatal编程技术网

Java 作为方法执行字符串?

Java 作为方法执行字符串?,java,reflection,rmi,rpc,Java,Reflection,Rmi,Rpc,是否可以将字符串作为方法执行 假设我有一个服务器和一个客户端。客户端正在发送一个“sayHello()”字符串。 如果客户端有一个private void sayHello()方法,那么客户端是否可以将这个字符串作为方法在客户端执行 我知道我可以通过将字符串与某些值进行比较来调用该方法,并基于此调用函数。但我正在研究上面描述的东西。这听起来像是一个完美的匹配。但是请注意,有许多框架可以用Java执行远程方法调用,您可能正在重新发明轮子。这听起来像是一个完美的匹配。但是请注意,有许多框架可以用Ja

是否可以将字符串作为方法执行

假设我有一个服务器和一个客户端。客户端正在发送一个
“sayHello()”
字符串。 如果客户端有一个
private void sayHello()
方法,那么客户端是否可以将这个字符串作为方法在客户端执行


我知道我可以通过将字符串与某些值进行比较来调用该方法,并基于此调用函数。但我正在研究上面描述的东西。

这听起来像是一个完美的匹配。但是请注意,有许多框架可以用Java执行远程方法调用,您可能正在重新发明轮子。

这听起来像是一个完美的匹配。但是请注意,有许多框架可以用Java执行远程方法调用,您可能正在重新发明轮子。

可以做到这一点

另外,请查看哪一项更符合所述要求。

可以做到这一点

另外,请看哪一个更符合所述要求。

一个简明的示例:

class Foo {
    public static void main(String[] args) throws Exception {
        String methodStr = "sayHello";
        Foo foo = new Foo();
        foo.getClass().getDeclaredMethod(methodStr).invoke(obj);
    }

    private void sayHello() {
        System.out.println("hello stackoverflow!");
    }
}
一个简明的例子:

class Foo {
    public static void main(String[] args) throws Exception {
        String methodStr = "sayHello";
        Foo foo = new Foo();
        foo.getClass().getDeclaredMethod(methodStr).invoke(obj);
    }

    private void sayHello() {
        System.out.println("hello stackoverflow!");
    }
}

编写反射代码并不难:

public void invokeByName(String methName) {
  try { getClass().getDeclaredMethod(methName).invoke(this); } 
  catch (RuntimeException e) { throw e; }
  catch (Exception e) { throw new RuntimeException(e); }
}

编写反射代码并不难:

public void invokeByName(String methName) {
  try { getClass().getDeclaredMethod(methName).invoke(this); } 
  catch (RuntimeException e) { throw e; }
  catch (Exception e) { throw new RuntimeException(e); }
}

是的,请参阅
java.beans.Statement
java.beans.Expression
是的,请参阅
java.beans.Statement
java.beans.Expression

这正是我要找的!这正是我要找的!