代码之家  ›  专栏  ›  技术社区  ›  MatBanik

如何从序列化中排除GWT中的对象属性?

  •  6
  • MatBanik  · 技术社区  · 15 年前

    有没有办法从GWT序列化中排除可序列化对象中的基元和对象属性?

    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;  
    }
    
    4 回复  |  直到 11 年前
        1
  •  10
  •   bakkal    15 年前

    我希望 特殊注释

    我想你要找的是 @GwtTransient

    @gwt瞬态 ,一个注释 告诉GWT-RPC将字段视为 它被标记为Java瞬态 关键字,即使不是。

    这个注解的意思是一样的 作为 transient 关键字, 但是所有序列化都忽略了它 除GWT以外的系统。通常 瞬变的 关键字应用于 此批注的首选项。 但是,对于与多个 序列化系统,它可以是 有用。

    参考: @GwtTransient

        2
  •  6
  •   eaj    15 年前

    你就不能宣布它是暂时的吗?

    transient private String password;
    
        3
  •  4
  •   Etienne Neveu    15 年前

    如果你真的想避免使用 瞬变的 关键字,您可能需要查看 自定义字段序列化程序 .

    在上一个GWT项目中,我使用它们序列化不可变类,因为GWT-RPC对这些类有限制。

    这是一个文档记录很差的特性,我当时发现的最好的解释不是在GWT文档中,而是在 this great wogwt wiki page . 你也可以在GWT中找到一些例子 com.google.gwt.user.client.rpc.core 包,因为GWT使用了很多这样的包。

    请注意,customfieldserializer仍然存在一些问题,例如 issue 2931 和 issue 3315 . 另外,我不喜欢它们的定义方式:与其使用静态方法,不如让用户实现 CustomFieldSerializer<T> 接口。我们会得到类型安全性和继承性。但这是另一场争论,GWT编译器可能出于性能原因强制使用这些静态方法(我还没有研究过)。

    尽管如此,它还是有效的,而且在特定情况下使用它们是很好的。

        4
  •  0
  •   Henry Liu    15 年前

    向字段添加瞬态

    推荐文章