【问题标题】:Execute a String as method?执行字符串作为方法?
【发布时间】:2012-10-06 07:37:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: java reflection rmi rpc


    【解决方案1】:

    这听起来很适合Java reflection。但请注意,有许多框架可用于使用 Java 执行远程方法调用,您可能需要重新发明轮子。

    【讨论】:

      【解决方案2】:

      Java Reflection 可以做到这一点。

      另请查看Remote Method Invocation (RMI),它更具体地满足所述要求。

      【讨论】:

        【解决方案3】:

        一个简洁的例子:

        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】:

          反射并不难编码:

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

          【讨论】:

          • 这正是我要找的!
          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-26
            • 1970-01-01
            • 2018-07-26
            • 1970-01-01
            相关资源
            最近更新 更多