龙目岛-在构造函数输入参数中保留字段的注释 [英] Lombok - retain field's annotation in constructor input params
本文介绍了龙目岛-在构造函数输入参数中保留字段的注释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Lombok在自动生成构造函数时错过了字段的注释.有没有办法在构造函数输入参数中保留字段的注释?
Lombok misses field's annotation while auto generating constructor. Is there a way to retain field's annotation in constructor input params?
用于生成构造函数的类,
Class to generate constructor,
@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;
}
}
所需班级:
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
:
In version v1.18.4 Lombok added support for copying specific annotations. Meaning, that if you put following setting to lombok.config
:
lombok.copyableAnnotations += com.google.inject.name.Named
并将以下Lombok注释应用于您的班级:
and apply following Lombok annotations to your class:
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class Hello {
@NonNull @Named("my-name") String name;
}
@Named
批注应复制到生成的构造函数参数中.
the @Named
annotation should be copied to your generated constructor argument.
这篇关于龙目岛-在构造函数输入参数中保留字段的注释的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文