在我的应用程序中,我广泛使用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;
}-*/;
}
以这种方式存储Java Objects是否安全?该文档说,当您将Java对象传递给JavaScript时,结果是“通过特殊语法可访问的不透明值”。这听起来让我很困惑。例如,如果我推送一个Integer并尝试获取它,则会抛出异常,因为找到了与Object不同的东西(至少在开发模式下)。其余的Java原始Wrappers也是如此。除了Java原始Wrappers的问题之外,还有其他问题要注意吗?
非常感谢
答案 0 :(得分:1)
你指的是哪个医生? this page上的那个?
他们谈论的是将Java对象传递给JavaScript,目的是让JavaScript代码使用对象中的方法或字段。可以这样做,但是你必须在JavaScript端使用的语法有点尴尬。如果您已经完成了任何JSNI,那么您已经看过了。
如果您不打算从JavaScript端访问Java对象,则可以忽略有关特殊语法的业务。所以是的,它是安全的。我很想知道它是否真的有助于提高性能。