将Long数组传递给JSNI函数

时间:2012-10-25 10:25:17

标签: java javascript gwt jsni

如何将Long[]数组或List<Long>传递给JSNI函数,如下所示:

public native void updateData(Long[] data)/*-{
    waveform.update({
        data: [0.5, 1.0, 0.5, 1.0]
    });
}-*/;

1 个答案:

答案 0 :(得分:3)

由于种种原因,你不能。

  • Java数组(无论哪种类型)都是JSNI的不透明对象。您必须使用JsArray(或JsArrayNumber或等)。 java.util.List
  • 也是如此
  • java.lang.Long将是JSNI
  • 的不透明对象
  • 即使使用long也无效,因为您无法将long传递给JSNI。这是因为并非所有long都可以表示为JS数字。相当于JS Numberdouble

您必须将Long[]复制到JsArrayNumber,并在将long值向下转换为double值时应对可能出现的溢出。