2012-02-19 50 views
0

隨着考慮性能,你會怎麼存儲多種類型的疊加爲您GWT應用程序的整個應要求使用?GWT:全局JavaScript覆蓋類型

+0

你確定你的「Java」的標籤不應該是一個「JavaScript的」標籤? – 2012-02-19 20:54:30

+0

@HovercraftFullOfEels我添加JavaScript代碼,但GWT你寫Java和讓GWT編譯成JavaScript,因此Java代碼是完全合理的。 – 2012-02-19 20:55:29

+0

@AdamMihalcin:謝謝!我對GWT和javascript的無知是我自己沒有更改標籤的原因。 – 2012-02-19 20:56:53

回答

1

如果我理解正確,你是想你的應用程序中的任何地方引用疊加類型。在這種情況下,請考慮創建一個public static變量。

例如,假設我們有一個JavaScript覆蓋型稱爲Book。在它的內部,我們可以創建一個靜態變量來保存我們的全局實例。

public class Book extends JavaScriptObject { 
    public static Book instance; // The global 

    protected Book(){} 

    public final native String getName()/*-{ 
     return this.name; 
    }-*/; 

    public final native void setName(String name)/*-{ 
     this.name = name; 
    }-*/; 
} 

再後來,我們引用它的地方,我們希望:

Book.instance = (Book) JavaScriptObject.createObject(); 
Book.instance.setName("How I Sailed the Seven Seas"); 
GWT.log(Book.instance.getName()); 

說實話,這是何等的任何「全局」變量在Java中的作品。疊加類型恰好以相同的方式工作!

請注意,沒有魔法通過將instance Book類的內部發生。你可以很容易地做同樣的事情:

public class FooBar{ 
    public static Book global_book; 
} 

及更高版本:

FooBar.global_book.setName("My Biography")