龙目岛-在构造函数输入参数中保留字段的注释 [英] Lombok - retain field's annotation in constructor input params

查看:110
本文介绍了龙目岛-在构造函数输入参数中保留字段的注释的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆