有没有办法从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;
}
答案 0 :(得分:10)
我希望有类似的东西 特殊注释
我认为你要找的是@GwtTransient
@GwtTransient
,一个注释 告诉GWT RPC将字段视为一样 它标有Java瞬态 关键字,即使它不是。这个注释意味着同样的事情 作为
transient
关键字, 但它被所有序列化忽略 GWT以外的系统。通常是 应使用transient
关键字 偏好这个注释。 但是,对于使用多个类型 序列化系统,它可以 是有用的。
答案 1 :(得分:6)
难道你不能简单地声明它是暂时的吗?
transient private String password;
答案 2 :(得分:4)
如果您确实想避免使用 transient 关键字,可能需要查看自定义字段序列化程序。
在我上一个GWT项目中,我使用它们来序列化不可变类,因为GWT-RPC对这些类有限制。
这是一个记录不完整的功能,我当时发现的最好的解释不是在GWT文档中,而是在this great wogwt wiki page上。您可能还会在GWT的com.google.gwt.user.client.rpc.core包中找到一些示例,因为GWT使用了很多这些示例。
请注意,CustomFieldSerializers仍然存在一些问题,例如issue 2931和issue 3315。另外,我不喜欢它们的定义方式:最好让用户实现CustomFieldSerializer<T>
接口,而不是使用静态方法。我们会获得类型安全和继承。但这是另一个争论,GWT编译器实际上可能出于性能原因要求使用这些静态方法(我没有研究过)。
尽管如此,它仍然有效,并且在特定情况下使用它们会很好。
答案 3 :(得分:0)
向场地添加瞬态