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?
1 ответ
Использование com.google.jsinterop:base
lib, эта библиотека должна включать утилиты для всего, что не может быть сделано с JsInterop, и библиотека будет поддерживать совместимость с GWT и j2cl. Библиотека довольно мала (всего 10 классов, 2 из них внутренние), поэтому просто добавьте ее в свой проект и изучите все его утилиты.
Так что вместо твоего обычая Array<T>.get(int)
а также JsArrayHelper
классы использования jsinterop.base.JsArrayLike<T>.getAt(int)
,