我在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)而不是自定义的JsArrayHelperjsinterop.base.JsArrayLike<T>.getAt(int)类。

关于java - JsInterop-获取数组中的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44950464/

10-11 22:22