Смешивание Java POJOs и GWT оверлейных типов - PullRequest
0 голосов
/ 19 мая 2011

В моем приложении я широко использую JsArray для хранения типов наложения.Я использую java.util.List для хранения своих клиентских POJO на Java.

По соображениям производительности и для унификации способа доступа к моей модели я планировал исключить списки и использовать только оболочки JSO.Учитывая обертку вокруг собственного массива, который может хранить любой объект Java:

 public class JsArrayObject<T> extends JavaScriptObject {

        protected JsArrayObject() {}

        public final native T get(int index) /*-{
            return this[index];
        }-*/;

        public final native void push(T value) /*-{
            this[this.length] = value;
        }-*/;
    }

Безопасно ли хранить объекты Java таким образом?В документе сказано, что когда вы передаете Java-объект в JavaScript, результатом является «непрозрачное значение, доступное через специальный синтаксис».Это звучит странно для меня.Например, если я нажму Integer и попытаюсь получить его, будет сгенерировано исключение, потому что было найдено что-то отличное от Object (по крайней мере, в режиме dev).То же самое происходит с остальными примитивными оболочками Java.Помимо проблем с Java-примитивными оболочками, есть ли другие проблемы, о которых нужно знать?

Большое спасибо

1 Ответ

1 голос
/ 20 мая 2011

На какой документ вы ссылаетесь? Тот, что на этой странице ?

Они говорят о передаче Java-объектов в JavaScript с намерением заставить код JavaScript использовать методы или поля в объекте. Это можно сделать, но синтаксис, который вы должны использовать на стороне JavaScript, немного неловкий. Если вы сделали какой-либо JSNI, вы видели это.

Если вы не собираетесь получать доступ к объектам Java со стороны JavaScript, вы можете игнорировать вопрос о специальном синтаксисе. Так что да, это безопасно. Мне было бы интересно узнать, если это действительно помогает производительности.

...