【发布时间】:2019-02-25 11:39:00
【问题描述】:
我喜欢基于this article (Why objects must be immutable) 使我的对象不可变。
但是,我正在尝试使用 Jackson Object Mapper 解析对象。我最初收到的是JsonMappingException: No suitable constructor found for type [simple type, class ]: cannot instantiate from JSON object.
我可以像here 中提到的那样修复它,方法是提供一个默认构造函数并使我的字段不是最终的。
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.NonNull;
@AllArgsConstructor
// @NoArgsConstructor(access = AccessLevel.PRIVATE)
@Builder
@Data
public class School {
@NonNull
private final String schoolId;
@NonNull
private final String schoolName;
}
我应该遵循什么好的编程风格来克服这个问题?唯一的办法是让我的对象可变吗?
我可以使用不使用默认构造函数的不同映射器吗?
【问题讨论】:
-
为您的不可变对象创建对 Jackson 友好的工厂怎么样?
标签: java jackson immutability lombok