[英]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.