【发布时间】:2021-01-30 09:20:42
【问题描述】:
如何将 Java 继承与 lombok 和 final(不可变数据类型)和 Gson 一起使用?
@ToString
@Getter
@EqualsAndHashCode(callSuper = false)
public abstract class AbstractContext {
protected final String applicationUuid;
protected final String userUuid;
protected final String accountUuid;
public AbstractContext(
String applicationUuid, String userUuid, String accountUuid) {
this.applicationUuid = applicationUuid;
this.accountUuid = accountUuid;
this.userUuid = userUuid;
}
@ToString
@Getter
@EqualsAndHashCode(callSuper = true)
public class ChildContext extends AbstractContext {
private final String foobar;
public ChildContext(
String applicationUuid, String userUuid, String accountUuid, String foobar) {
super(applicationUuid, userUuid, accountUuid);
this.foobar = foobar;
}
}
Gson gson = new Gson();
ChildContext inputB =
gson.fromJson(
"{\"application_uuid\":\"deadbeef\",\"user_uuid\":\"aaabbb_4958\",\"foobar\":\"abc\"}",
ChildContext.class);
但是,我得到的结果是其他父类字段为 null
foobar=abc, application_uuid=null, user_uuid=null, account_uuid=null
我试图研究使用 lombok 中的 SuperBuilder,但结果仍然相同
【问题讨论】:
-
您为什么认为 JSON 字段
application_uuid会映射到 Java 字段applicationUuid?它们是不同的名称。