java - GWT:使用 JSNI 的 native 方法:如何动态调用方法

标签 java gwt native jsni

我正在使用 GWT,我创建了一个调用类 EverlinkedActions 中的方法 cmd_addspace 的 native 方法,它现在工作正常:

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”,它的名称在 native 方法中作为参数传递。

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

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

}-*/;

感谢您的帮助

最佳答案

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

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

关于java - GWT:使用 JSNI 的 native 方法:如何动态调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16463432/

相关文章:

java - 关闭 JFrame 窗口?

eclipse - 更新 GWT Eclipse 插件后应用程序将无法编译

javascript - Google Web Toolkit,附加错误

c# - java字节和C#字节一样吗?

Java/JVM : call native C method using it's address and signature

c# - 为什么原生Win32难拆,.NET app拆容易?

java - 如何查找 java ee web 应用程序的系统要求

java - 如何使用DataInputStream从文件中读取二进制数据并打印到控制台?

java.lang.OutOfMemory错误: Java heap space with array of 100 objects

javascript - 合并 GWT 生成的文件