【问题标题】:Lombok with SuperBuilder龙目岛与 SuperBuilder
【发布时间】:2021-03-27 04:14:46
【问题描述】:

我有一个使用 Lombok 的 Java 项目(一个自动插入编辑器和构建工具的 Java 库)

@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = { "id" })
@ToString(of = { "id" })
public class DacContexte {

    private Long id;
...
}

还有这个:

@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
public class DacContexteReturn extends DacContexte {
}

但是当我做构建器时:

return  DacContexteReturn.builder()
                .id(5L)
                .build();

我收到了这个错误:

Required type: DacContexteReturn
Provided: DacContexte

【问题讨论】:

  • 你可以试试在DacContexteReturn 中不使用@AllArgsConstructor 这应该可以解决你的问题

标签: java inheritance lombok


【解决方案1】:

无法复制。

> mkdir tmpDir
> cd tmpDir
> nano DacContexte.java

import lombok.*;
import lombok.experimental.*;

@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = { "id" })
@ToString(of = { "id" })
public class DacContexte {
    private Long id;
}

> nano DacContexteReturn.java

import lombok.*;
import lombok.experimental.*;

@Getter
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = { "id" })
@ToString(of = { "id" })
public class DacContexte extends DacContexteReturn {
    private Long foo;
}

> nano Test.java

class Test {
    void foo() {
        DacContexteReturn dcr = DacContexteReturn.builder().id(5L).build();
    }
}

> javac -cp ~/lombok.jar *.java
[ no errors or warnings ]

检查以确保您使用的是 latest lombok(当前为 1.18.16),如果这不能解决问题,请检查您是否准确地描述了问题。如果在 eclipse 或 intellij 中发生此错误,请更新问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2021-10-02
  • 2015-10-18
  • 1970-01-01
相关资源
最近更新 更多