Lombok + Intellij:无法解析超类的方法

时间:2017-12-14 13:53:16

标签: intellij-idea lombok

我有一个超类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ErrorResponse {
    @JsonProperty
    private String message;
}

我有一个孩子

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder(builderMethodName = "_builder") // add custom builder name to avoid compilation issue 'return type is not compatible...'
@EqualsAndHashCode(callSuper=true)
public class AskQuestionErrorResponse extends ErrorResponse {
    @JsonProperty
    private String status;

    @Builder(builderMethodName = "_builder") // add custom builder name to avoid compilation issue 'return type is not compatible...'
    private AskQuestionErrorResponse(String status, String message){
        super(message);
        this.status = status;
    }
}

当我使用构建器创建像这样的对象时

AskQuestionErrorResponse._builder()
   .status(1)
   .message("my message here").build()

Intellij以红色显示我message并且存在问题cannot resolve method 'message(java.lang.String)'无论如何,项目即使出现此错误也会编译并运行。

我已经启用了注释。

如果我像这样评论来自超类的字段

AskQuestionErrorResponse._builder()
                .status(ex.getStatus().getValue()
                //.message(ex.getMessage()
                ).build()

有效。它似乎没有看到超类成员。我也尝试过maven clean并安装,重建项目。

UPDATE 已安装Lombok插件 enter image description here

PreferencesDefault preferences

中启用了注释处理器

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

我找到了。如果您查看我的课程,您会看到两个@Builder注释。我删除了第一个,魔术发生了。现在我的班级看起来像这样,没有警告

@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper=true)
public class AskQuestionErrorResponse extends ErrorResponse {
    @JsonProperty
    private String status;

    @Builder(builderMethodName = "_builder") // add custom builder name to avoid compilation issue 'return type is not compatible...'
    public AskQuestionErrorResponse(String status, String message){
        super(message);
        this.status = status;
    }
}

希望有所帮助:)

答案 1 :(得分:-1)

您需要安装Intellij Lombok插件,以便在编译为字节代码之前理解注释。 https://projectlombok.org/setup/intellij