public class UserAction {
private final UUID uuid;
private String userId;
/* more fields, setters and getters here */
public UserAction(){
this.uuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
}
public UserAction(UUID uuid){
this.uuid = uuid;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final UserAction other = (UserAction) obj;
if (this.uuid != other.uuid && (this.uuid == null || !this.uuid.equals(other.uuid))) {
return false;
}
return true;
}
@Override
public int hashCode() {
int hash = 7;
hash = 53 * hash + (this.uuid != null ? this.uuid.hashCode() : 0);
return hash;
}
}
我正在使用Gson对此类进行序列化和反序列化。今天,我不得不在此对象中添加最终的UUID。我没有序列化的问题。我需要强制gson public UserAction(UUID uuid)
在反序列化时使用构造函数。我该如何实现?
您可以实现一个自定义的JsonDeserializer并将其注册到GSON。
class UserActionDeserializer implements JsonDeserializer<UserAction> {
public UserAction deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
return new UserAction(UUID.fromString(json.getAsString());
}
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(UserAction.class, new UserActionDeserializer());
请记住,此代码尚未经过测试。
在做我们的项目时,我在想些什么。Google的GSON API是否使用您想要反序列化的JSON的构造函数?例如: 我有一个JSON字符串,我想把它转换成Employee对象。Employee对象有一个构造函数,它对参数应用一些检查(例如,它的ID是否正确) 链接到GSON:https://github.com/google/gson 编辑:所以在尝试断点之后,我发现构造函数没有被调用。有人知道怎么
我想在GWT项目中强制执行构造函数注入,使用Guice注释,它可以放在字段注入和构造函数注入的构造函数上。 该项目已经使用了检查风格和PMD。 我可以简单地通过禁止字段上的注释来强制构造函数注入,但是我找不到检查风格模块或PMD规则来做到这一点。我肯定我错过了一些东西,因为它似乎是静态代码分析工具的日常任务。
主要内容:默认拷贝构造函数拷贝和复制是一个意思,对应的英文单词都是 。 对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。 在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对
问题内容: Gson用户指南指出,我们应该为任何可以正常使用Gson的类定义默认的无参数构造函数。甚至,在Gson 类的javadoc中说,如果我们尝试对缺少默认构造函数的类实例进行反序列化,则会抛出异常,在这种情况下 应 使用该异常。但是,我尝试对缺少默认构造函数的类使用Gson进行测试,并且序列化和反序列化工作都没有任何麻烦。 这是反序列化的代码。没有非参数构造函数的类: 和一个测试: 效果很
Gson用户指南指出,我们应该为任何类定义默认的无参数构造函数,以便正确使用Gson。更重要的是,在Gson的类的javadoc中说,如果我们试图反序列化缺少默认构造函数的类的实例,将引发异常,在这种情况下,我们应该使用。然而,我已经尝试在缺少默认构造函数的类中测试使用Gson,并且序列化和反序列化都可以顺利工作。 下面是反序列化的一段代码。没有非参数构造函数的类: 还有一个测试: 这很好用。 所
问题内容: 我有一个定义抽象方法的抽象类A。这意味着,要使一个类变得可实例化,必须实现所有抽象方法。 我希望所有子类都以2个整数作为参数实现一个构造函数。 声明构造函数违反了我的目的,因为我希望在子类中定义构造函数,而我对实现一无所知。而且,我不能将构造函数声明为抽象的。 有没有办法做到这一点 ? 我想要的例子: 可以说我正在定义Matrix类的API。在我的问题中,Matrix无法更改其尺寸。