我在JsInterop中创建了自己的自定义数组:
@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Array")
public interface Array<T>
{
public void push(T value);
@JsProperty(name = "length")
public int getLength();
@JsProperty(name = "length")
void setLength(int newLength);
@JsOverlay
default T get(int index) {
return JsArrayHelper.getArrayValue(this, index);
}
}
这是按比例缩小的JsArrayHelper类:
public class JsArrayHelper
{
//TODO: Eliminate JSNI. Better way to do this?
public static native <T> T getArrayValue(Array<T> a, int i) /*-{
return a[i];
}-*/;
}
有没有比使用JSNI更好的方法来获取数组的值?
最佳答案
使用com.google.jsinterop:base
lib,此lib应该包含实用程序,用于使用JsInterop无法完成的任何事情,并且该lib将保持与GWT和j2cl的兼容性。该库很小(只有10个类,其中2个是内部类),因此只需将其添加到项目中并浏览其所有实用程序。
因此,请使用Array<T>.get(int)
而不是自定义的JsArrayHelper
和jsinterop.base.JsArrayLike<T>.getAt(int)
类。
关于java - JsInterop-获取数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44950464/