我有两个课程Child延伸Parent.我需要在类上放置@Builder注释,这样我就不需要自己创建构建器了.
package jerry;// Internal compiler error: java.lang.NullPointerException
import lombok.AllArgsConstructor;
import lombok.Builder;
@AllArgsConstructor(onConstructor=@__(@Builder))
public class Child extends Parent {
//Multiple markers at this line
// - Implicit super constructor Parent() is undefined. Must explicitly invoke another constructor
// - overrides java.lang.Object.toString
private String a;
private int b;
private boolean c;
}
@Builder
public class Parent {
private double d;
private float e;
}
Run Code Online (Sandbox Code Playgroud)
我需要能够构建这样的子实例
Child child = Child.builder().a("aVal").b(1000).c(true).d(10.1).e(20.0F).build();
Run Code Online (Sandbox Code Playgroud)
但到目前为止,我收到了代码注释中提到的错误.任何人都可以指出我正确的方向如何使用lombok或任何其他类似的库实现它?
子问题
为什么@AllArgsConstructor(onConstructor=@__(@Autowired))编译但@AllArgsConstructor(onConstructor=@__(@Builder))不是?
我想requestScopedBean.userDetails在我的控制器update(...)执行时/执行之前填充。
在我的spring web项目中,我有基于java的MyConfiguration extends WebMvcConfigurerAdapter我有:
@Bean(name = "requestScopedBean")
@Scope(value = "prototype")
public RequestScopedBean requestScopedBean() {
return new RequestScopedBean();
}
Run Code Online (Sandbox Code Playgroud)
在RequestScopedBean.java:
public class RequestScopedBean {
public @Autowired UserDetails userDetails;
public void setUserDetails(UserDetails pUserDetails){
userDetails = pUserDetails;
}
@Override
public String toString() {
return "" + (userDetails != null) ;
}
}
Run Code Online (Sandbox Code Playgroud)
和 UserDetails.java
public class UserDetails {
private Long id;
private String name;
public Long getId() {
return id;
}
public void setId(Long …Run Code Online (Sandbox Code Playgroud)