簡體   English   中英

如何從序列化中排除GWT中的對象屬性?

[英]How do you exclude object property in GWT from serialization?

有沒有辦法從GWT序列化中排除Serializable對象中的原始和對象屬性?

public class Provider implements Serializable{  
    public Provider() {  
    }  

    //Id like to exclude this property:   
        private String password;  
    //  

    private String address1;  
    private String address2;  
    private String companyName;  
    private String phone;  
}

我希望有類似特殊注釋的東西

我想你要找的是@GwtTransient

@GwtTransient ,一個注釋,告訴GWT RPC將字段視為用Java transient關鍵字標記,即使它不是。

此注釋與transient關鍵字的含義相同,但除GWT之外的所有序列化系統都會忽略它。 通常, transient參數應優先於此注釋使用。 但是,對於與多個序列化系統一起使用的類型,它可能很有用。

參考: @GwtTransient

你不能簡單地宣布它是短暫的嗎?

transient private String password;

如果您確實想避免使用transient關鍵字,則可能需要查看自定義字段序列化程序

在我上一個GWT項目中,我使用它們來序列化不可變類,因為GWT-RPC對這些類有限制。

這是一個記錄不完整的功能,我當時發現的最好的解釋不是在GWT文檔中,而是在這個偉大的wogwt wiki頁面上 您可能還會在GWT的com.google.gwt.user.client.rpc.core包中找到一些示例,因為GWT使用了很多這些示例。

請注意,CustomFieldSerializers仍然存在一些問題,例如問題2931問題3315 另外,我不喜歡它們的定義方式:不要使用靜態方法,最好讓用戶實現CustomFieldSerializer<T>接口。 我們會獲得類型安全和繼承。 但這是另一個爭論,GWT編譯器實際上可能出於性能原因要求使用這些靜態方法(我沒有研究過)。

盡管如此,它仍然有效,並且在特定情況下使用它們是件好事。

向場地添加瞬態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM