gpt4 book ai didi

java - Lombok - 在构造函数输入参数中保留字段的注释

转载 作者:IT老高 更新时间:2023-10-28 20:54:06 25 4
gpt4 key购买 nike

Lombok 在自动生成构造函数时错过了字段的注释。有没有办法在构造函数输入参数中保留字段的注释?

生成构造函数的类,

@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class Test {

@Named("MyField")
private final String field;
@Named("MyHandler")
private final SomeHandler handler;
}

生成的类:

public class Test {

@Named("MyField")
private final String field;
@Named("MyField")
private final SomeHandler handler;

@Inject
public Test(final String field, final SomeHandler handler) {
this.field = field;
this.handler = handler;
}
}

想要的类(class):

public class Test {

@Named("MyField")
private final String field;
@Named("MyHandler")
private final SomeHandler handler;

@Inject
public Test(@Named("MyField")final String field,
@Named("MyHandler")final SomeHandler handler) {
this.field = field;
this.handler = handler;
}

}

最佳答案

在版本 v1.18.4 中Lombok 添加了对复制特定注释的支持。意思是,如果您将以下设置放入 lombok.config:

lombok.copyableAnnotations += com.google.inject.name.Named

并将以下 Lombok 注释应用到您的类(class):

@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class Hello {
@NonNull @Named("my-name") String name;
}

应该将 @Named 注释复制到生成的构造函数参数中。

限制:这在 annotation can't be put on a field 时不起作用或 annotation on a field overrides constructor initialization

关于java - Lombok - 在构造函数输入参数中保留字段的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42526279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com