2

我正在使用 GWT,并且我创建了一个本机方法,该方法在 EverlinkedActions 类中调用方法 cmd_addspace 并且现在可以正常工作:

private static native String execute(String functionName,  Object[] vParams)/*-{
  try{          
      @es.gwt.client.dash.actions.impl.EverlinkedActions::cmd_addspace([Ljava/lanG/Object;)(vParams);          
  }catch(e){
      alert(e.message);
  }

}-*/;

如何使方法名称动态化?这意味着我想调用方法“functionName”而不是“cmd_addspace”,它的名称作为本机方法中的参数传递。

他们是一种使类名也动态的方法吗?我想要这样的东西:

private static native String execute(String className, String functionName,  Object[] vParams)/*-{
  try{          
      @es.gwt.client.dash.actions.impl.className::functionName([Ljava/lanG/Object;)(vParams);          
  }catch(e){
      alert(e.message);
  }

}-*/;

谢谢你的帮助

4

1 回答 1

4

不确定您要在这里实际实现什么,但恐怕 JSNI 不能那样工作。

诸如此类@es.gwt.client.dash.actions.impl.EverlinkedActions::cmd_addspace([Ljava/lanG/Object;)(vParams);的代码在编译时需要是一个完全可解析的符号,因为类和方法名称会被它们的最小化版本替换。

于 2013-05-09T16:27:26.503 回答