是否可以通过这种方式从同一个类中的另一个 native 方法调用 native 方法?
public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
//..
return secondVar;
}-*/;
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = mySECONDJsniMethod(name);
//..
return firstVar;
}-*/;
在我的 Chrome 控制台中,它返回: Uncaught TypeError: mySECONDJsniMethod is not a function
。
有任何想法吗?谢谢。
最佳答案
是的。在 myFIRSTJsniMethod() 的 JSNI 中,使用正常的 JSNI 语法来调用 Java 方法。
例如,如果这两个方法位于 com.mycompany.Test
类中,您可以像这样调用 mySECONDJsniMethod():
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = this.@com.mycompany.Test::mySECONDJsniMethod(Ljava/lang/String;)(name);
//..
return firstVar;
}-*/;
请参阅 Accessing Java Methods and Fields from JavaScript 上的 GWT 文档了解更多信息。
编辑:这是一个完整的可编译示例:
package com.mycompany.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
public class SO26277049 implements EntryPoint {
@Override
public void onModuleLoad() {
final JavaScriptObject firstVar = myFIRSTJsniMethod("hello world!");
}
public native JavaScriptObject mySECONDJsniMethod(String name) /*-{
var secondVar = {
name: name
};
return secondVar;
}-*/;
public native JavaScriptObject myFIRSTJsniMethod(String name) /*-{
var secondVar = this.@com.mycompany.client.SO26277049::mySECONDJsniMethod(Ljava/lang/String;)(name);
$wnd.alert(secondVar.name);
var firstVar = secondVar;
return firstVar;
}-*/;
}
关于java - 如何从 GWT 中的 JSNI 方法调用 JSNI 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26277049/