java - JsInterop - 获取数组中的值

标签 java arrays gwt jsni gwt-jsinterop

我在 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,该库应该包含 JsInterop 无法完成的任何实用程序,并且该库将保持与 GWT 和 j2cl 的兼容性。该库非常小(只有 10 个类,其中 2 个是内部类),因此只需将其添加到您的项目中并探索其所有实用程序即可。

所以而不是您的自定义 Array<T>.get(int)JsArrayHelper类使用jsinterop.base.JsArrayLike<T>.getAt(int) .

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

相关文章:

java - LWUIT 画家 : How to draw a line on top of a Image Label?

javascript - 遍历特定对象和特定属性

javascript - 如何将json数据添加到数组onClick?

javascript - 如何向 GWT 中的 Web 应用程序添加对插件的支持?

gwt - 在Enter键上显示所有选项的SuggestBox GWT

java - 嵌入式 glassfish 容器的 JUnit 测试错误

从 Jmenu 中选择项目并单击按钮时出现 java.lang.NullPointerException

java - 服务中的多线程 (Android/Java)

PHP 多维数组 : replace all keys with concatenation of two values

gwt - 以编程方式将 UiBinder 样式更改为另一个 UiBinder 样式