我有一个超类
@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并安装,重建项目。
在Preferences
和Default preferences
答案 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