我在这里使用带有实体的lombok项目就是我的例子:
package com.company.entities;//<---------Note the package
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Entity
@Builder
@Getter @Setter @AllArgsConstructor @NoArgsConstructor @ToString
public class Client {
@Id
private long id;
private String firstName;
private String lastName;
}
因此,当我尝试在同一个软件包中使用时,工作正常:
当我将包更改为package com.company.controllers;
:
package com.company.controllers;//<---------Note the package
public class Mcve {
public static void main(String[] args) {
Client client = new Client.ClientBuilder()
.id(123)
.firstName("firstName")
.lastName("lastName")
.build();
}
}
我收到错误:
ClientBuilder() is not public in com.company.entities.Client.ClientBuilder; cannot be accessed from outside package
我在这篇文章中尝试了所有解决方案:
我使用lombok 1.16.18
和1.16.20
进行测试。
当我创建自己的构建器类时,它工作正常,但当我使用@Builder
时,我知道这意味着什么,但没办法,我无法解决这个问题!我该怎么做才能解决这个问题?
答案 0 :(得分:6)
您不必实例化构建器。而是使用:
Client client = Client.builder()
.id(123)
.firstName("firstName")
.lastName("lastName")
.build();