【发布时间】:2013-02-17 19:40:59
【问题描述】:
如何在 jsni 方法中使用 int 值?
public class Person extends JavaScriptObject{
// some other methods
public final native void setPoints(int i)/*-{
this.points= this.points + i;
}-*/;
public final native int getPoints()/*-{
return this.points;
}-*/;
}
我在结合 JsArray 的方法中使用它
public static boolean moreThanZeroPoints(JsArray<Person> arr, int index){
if(arr.get(index).getPoints() > 0){
return true;
}
return false;
}
在arr.get(index).getPoints() 中给出以下错误消息:
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
对于arr.get(index).setPoints(1),我收到相同的错误消息。
怎么了?
请帮忙。
【问题讨论】:
-
包含这些方法的类是什么? (我想是
JavaScriptObject子类?)“不起作用”是什么意思? (即调用这些方法的代码是什么样的?预期结果是什么?实际结果是什么?) -
请添加该类的一些代码。只看到这个sn-p很难帮你。
-
我编辑了我的问题。希望对您有所帮助。
-
据我所知,您拥有
arr.get(index)... 而没有检查arr是否在该索引上具有值,这可能导致某种OutOfBoundsException。我将您的setPoints方法的返回类型更正为void,因为我认为这只是一个错误。如果您直接从代码中复制了它,请修改它。
标签: gwt