Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象类上的生成器不能@Jacksonized(该生成器永远不会被使用)_Java_Jboss_Jackson_Wildfly_Lombok - Fatal编程技术网

Java 抽象类上的生成器不能@Jacksonized(该生成器永远不会被使用)

Java 抽象类上的生成器不能@Jacksonized(该生成器永远不会被使用),java,jboss,jackson,wildfly,lombok,Java,Jboss,Jackson,Wildfly,Lombok,我有两个类OAuth2Token和CachedOAuth2Token,它们扩展了一个名为AbstractOAuth2Token的类 AbstractOAuth2Token.java @SuperBuilder @Jacksonized @JsonSubTypes({ @JsonSubTypes.Type(value = OAuth2Token.class), }) @Getter @Setter @ToString public abstract class AbstractOA

我有两个类OAuth2TokenCachedOAuth2Token,它们扩展了一个名为AbstractOAuth2Token的类

AbstractOAuth2Token.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;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
@JsonTypeName("OAuth2Token")
@Jacksonized
public class OAuth2Token extends AbstractOAuth2Token {
    @JsonProperty("expires_in")
    private int expiresIn;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
public class CachedOAuth2Token extends AbstractOAuth2Token {
    private LocalDateTime expirationDate;
}
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;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
@JsonTypeName("OAuth2Token")
@Jacksonized
public class OAuth2Token extends AbstractOAuth2Token {
    @JsonProperty("expires_in")
    private int expiresIn;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
public class CachedOAuth2Token extends AbstractOAuth2Token {
    private LocalDateTime expirationDate;
}
CachedOAuth2Token.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;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
@JsonTypeName("OAuth2Token")
@Jacksonized
public class OAuth2Token extends AbstractOAuth2Token {
    @JsonProperty("expires_in")
    private int expiresIn;
}
@Getter
@Setter
@SuperBuilder
@ToString(callSuper = true)
public class CachedOAuth2Token extends AbstractOAuth2Token {
    private LocalDateTime expirationDate;
}
不幸的是,我的Maven项目没有生成,因为
AbstractOAuth2Token.java:抽象类上的构建器不能@Jacksonized(该构建器永远不会被使用)。

如果AbstractOAuth2Token不是抽象的,那么即使代码按预期工作,我也能够使用构建器创建它的实例,这确实不是我想要的。它的构造函数是受保护的,所以没有问题

我的想法是,我想让抽象化的OAuth2变得抽象,而不会失去孩子们的任何功能。我是Lombok的粉丝,所以我希望能够与Jackson一起使用自动生成的生成器

这是一个Wildfly 11项目,包含Lombok 1.18.16


如何解决此问题?

不要将
@Jacksonized
添加到
抽象
基类中。非
@Jacksonized
@SuperBuilder
s与
@Jacksonized
@SuperBuilder
s兼容。由于Jackson永远不会直接使用
AbstractOAuth2Token
的生成器,因此不需要为Jackson显式配置它。

我将在完成当前任务后尝试此操作,并让您知道结果。我现在测试了它,它可以工作了!谢谢你的帮助:)