混合Java Pojo和;GWT覆盖类型

混合Java Pojo和;GWT覆盖类型,gwt,overlay,pojo,Gwt,Overlay,Pojo,在我的应用程序中,我广泛使用JsArray来存储覆盖类型。我使用java.util.List来存储客户端java POJO 出于性能原因和统一访问模型的方式,我计划取消列表,只使用JSO包装器。给定可以存储任何Java对象的本机数组的包装器: public class JsArrayObject<T> extends JavaScriptObject { protected JsArrayObject() {} public final nati

在我的应用程序中,我广泛使用JsArray来存储覆盖类型。我使用java.util.List来存储客户端java POJO

出于性能原因和统一访问模型的方式,我计划取消列表,只使用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;
        }-*/;
    }
公共类JsArrayObject扩展了JavaScriptObject{
受保护的JsArrayObject(){}
公共最终本机T get(整数索引)/*-{
返回此[索引];
}-*/;
公共最终本机无效推送(T值)/*-{
this[this.length]=值;
}-*/;
}
这样存储Java对象安全吗?文档说,当您将Java对象传递到JavaScript中时,结果是“通过特殊语法可以访问的不透明值”。这听起来让我很困惑。例如,如果我推送一个整数并尝试获取它,将抛出一个异常,因为找到了与对象不同的内容(至少在开发模式下)。其余的Java原语包装器也会发生同样的情况。除了Java原语包装器的问题外,还有其他需要注意的问题吗


非常感谢

您指的是哪位医生?穿的那个

他们讨论的是将Java对象传递到JavaScript中,目的是让JavaScript代码使用对象中的方法或字段。这样做是可能的,但是在JavaScript端必须使用的语法有点笨拙。如果你做过JSNI,你就会看到它


如果您不打算从JavaScript端访问Java对象,那么可以忽略有关特殊语法的业务。所以是的,它是安全的。我很想知道它是否真的对性能有帮助。

谢谢。我现在理解了“通过特殊语法访问的不透明值”的含义。我的意图是使用JavaScriptObjects来存储JavaPOJO,但我不需要从Javascript调用Java方法。我唯一关心的是编译器是否会弄乱这个结构。编译器不会弄乱任何东西。当JavaScript解释器运行GWT编译器生成的代码时,所有内容都是JavaScript原语或JavaScript对象。其中一些JavaScript对象表示Java对象。Java和JavaScipt对象模型的差异很大,Java对象从JavaScript的角度看很奇怪,但如果这是一个问题,GWT根本不起作用。我来这里是为了感谢您提供的方便和最有用的答案,因为我不能对此作出回应,也不能对那里的生命禁令进行投票