我有两个类oauth2token和cachedoauth2token,它们扩展了一个名为abstractoauth2token的类。
抽象OAuth2Token.java
@SuperBuilder
@Jacksonized
@JsonSubTypes({
@JsonSubTypes.Type(value = OAuth2Token.class),
})
@Getter
@Setter
@ToString
public abstract class AbstractOAuth2Token {
@JsonProperty("access_token")
private String accessToken;
@JsonProperty("token_type")
private String tokenType;
}
oauth2token.java文件
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
@JsonTypeName("OAuth2Token")
@Jacksonized
public class OAuth2Token extends AbstractOAuth2Token {
@JsonProperty("expires_in")
private int expiresIn;
}
cachedoauth2token.java文件
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
public class CachedOAuth2Token extends AbstractOAuth2Token {
private LocalDateTime expirationDate;
}
不幸的是,我的maven项目没有构建,因为 AbstractOAuth2Token.java: Builders on abstract classes cannot be @Jacksonized (the builder would never be used).
如果abstractoauth2token不是抽象的,那么即使代码按预期工作,我也可以使用构建器创建它的示例,这确实不是我想要的。它的构造函数是受保护的,所以没有问题。
我的想法是让抽象化的OAuth2变得抽象而不丧失孩子们的任何功能。我是Lombok迷,所以我想能够使用自动生成的建设者,但与Jackson一起。
这是一个WildFly11项目,Lombok1.18.16版本
如何解决这个问题?
1条答案
按热度按时间lx0bsm1f1#
不添加
@Jacksonized
给你的abstract
基类。非-@Jacksonized
@SuperBuilder
与…兼容@Jacksonized
@SuperBuilder
s。因为Jackson永远不会使用AbstractOAuth2Token
的生成器,无需显式配置它。