Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在gwt jsni方法中使用int值_Gwt - Fatal编程技术网

如何在gwt jsni方法中使用int值

如何在gwt jsni方法中使用int值,gwt,Gwt,如何在jsni方法中使用int值 公共类Person扩展JavaScriptObject{ //其他一些方法 公共最终本机无效设定点(int i)/*-{ this.points=this.points+i; }-*/; 公共最终本机int getPoints()/*-{ 返回此项。点数; }-*/; } 我在一个与JsArra

如何在jsni方法中使用int值

公共类Person扩展JavaScriptObject{
//其他一些方法
公共最终本机无效设定点(int i)/*-{
this.points=this.points+i;
}-*/;
公共最终本机int getPoints()/*-{
返回此项。点数;
}-*/;                                                                                    
}
我在一个与JsArray相结合的方法中使用它

public static boolean moreThanZeroPoints(JsArray<Person> arr, int index){
     if(arr.get(index).getPoints() > 0){
         return true;
     }
     return false;
}
对于
arr.get(index).settingpoints(1)
我会收到相同的错误消息。 怎么了?
请提供帮助。

注意,代码没有直接在方法中引用
JavaScript窗口对象。从JSNI访问浏览器的
窗口和文档对象时,必须分别将它们引用为
$wnd和$doc
。编译后的脚本在嵌套框架中运行,$wnd和$doc将自动初始化,以正确引用
主机页的窗口和文档。

public最终本机int设置点(int i)/-{
$wnd.points=$wnd.points+i;
}-/;
并希望如下:

public final native int getPoints()/*-{
返回评估('wnd.'+点数);;
}-*/;

因为
点可能不存在,所以必须在
getPoints()
中将
未定义的
强制为某个整数值;或者添加一个
hasPoints()
方法,并仅在定义
points
时调用
getPoints()

//将未定义(或null或0)强制为0
公共最终本机int getPoints()/*-{
返回此。点| | 0;
}-*/;

//强制未定义或null为-1
公共最终本机int getPoints()/*-{
返回(this.points!=null)?this.points:-1;
}-*/;

对于
setPoints()
,您声明了一个返回类型
int
,但实际上从未声明过任何
return
,这相当于在JS中返回
未定义的
。qben编辑了您的答案,并通过将返回类型更改为
void

来修复它。包含这些方法的类是什么?(我想是
JavaScriptObject
子类?)什么是“不工作”呢?(即调用这些方法的代码是什么样子的?预期结果是什么?实际结果是什么?)请添加一些此类的代码。只看到这一段很难帮助你。我编辑了我的问题。希望能有帮助。据我所知,你有
arr.get(index)
。。。不检查
arr
在该索引上是否有值,这可能导致某种边界外异常。我将
设置点
方法的返回类型更正为
void
,因为我认为这只是一个勘误表。如果您是从代码中复制的,请修改它。@Baadshah,在本例中,Pero使用的是GWT覆盖类型,允许在引用底层JS对象的本机方法中使用
this
关键字。有关更多详细信息,请参阅。
    uncaught: Exception caught: Exception: caught: something other than an int was returned from JSNI method.
    package-path:: getPoints(): JS value of type undefined, expected int