GWT:使用JSNI的Native方法:如何动态调用方法

时间:2013-05-09 13:53:04

标签: java gwt native jsni

我正在使用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);
  }

}-*/;

如何让方法名称动态化?它意味着代替" cmd_addspace"我想调用方法" functionName"其名称在本机方法中作为参数传递。

他们是一种让类名也动态的方法吗?我希望有类似的东西:

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

}-*/;

感谢您的帮助

1 个答案:

答案 0 :(得分:4)

不确定你在这里想要实现什么,但我担心JSNI不能像那样工作。

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