执行String作为方法?

时间:2012-10-16 08:43:14

标签: java reflection rmi rpc

是否可以将String作为方法执行?

假设我有一台服务器和一台客户端。客户端发送"sayHello()"字符串。 客户端是否可以在客户端执行此字符串作为方法,如果他有private void sayHello()方法?

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

5 个答案:

答案 0 :(得分:5)

这听起来像Java reflection的完美匹配。但请注意,有许多框架用于使用Java执行远程方法调用,您可能会重新发明轮子。

答案 1 :(得分:3)

Java Reflection可以做到这一点。

另请参阅Remote Method Invocation (RMI),它更符合规定的要求。

答案 2 :(得分:2)

反思不是很难编码:

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

答案 3 :(得分:0)

一个简明的例子:

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

答案 4 :(得分:0)

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