java - 使用 lombok v 0.9.2 注释字段列表而不是单个字段

标签 java lombok

为了生成更少的样板代码,我使用了 lombok 注释。我本来希望通过注释这样的字段列表来创建更少的样板代码

@Getter @Setter
private String a, b, c, d, e ... z;

但注释似乎只影响列表中的第一个字段。有没有办法让它影响整个列表而不像将其分开

@Getter @Setter
private String a;

@Getter @Setter
private String b;

请注意,我无法注释该类,因为有很多字段需要有限的访问权限,而有些字段我只需要 getter 访问权限。基本上,我正在寻找 java 中与 ruby​​ 的 attr_accessor 类型列表类似的东西,这非常棒。

更新

这在使用 1.12.6 lombok 的 ant 构建上失败。我使用 1.12.6 lombok 版本测试了一个简单的案例,它可以工作。由于我们在整个项目中广泛使用 lombok,并且堆栈跟踪没有提及我们代码中的任何内容,因此很难判断我的代码中的哪个位置出现了问题。

Java 版本:

jimi@Immaculate:/web/project/XXXXX.com$ javac -version
javac 1.6.0-internal
jimi@Immaculate:/web/project/XXXXX.com$ java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build pxi3260sr13ifix-20130303_02(SR13+IV37419))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260sr13-20130114_134867 (JIT enabled, AOT enabled)
J9VM - 20130114_134867
JIT  - r9_20130108_31100
GC   - 20121212_AA)
JCL  - 20130303_02

堆栈跟踪:

    [javac] Consult the following stack trace for details.
    [javac] java.lang.NullPointerException
    [javac]     at java.util.IdentityHashMap$IdentityHashMapEntry.setValue(IdentityHashMap.java:135)
    [javac]     at lombok.javac.apt.Processor.process(Processor.java:261)
    [javac]     at lombok.core.AnnotationProcessor$JavacDescriptor.process(AnnotationProcessor.java:117)
    [javac]     at lombok.core.AnnotationProcessor.process(AnnotationProcessor.java:167)
    [javac]     at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:639)
    [javac]     at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:568)
    [javac]     at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:713)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:999)
    [javac]     at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:739)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:365)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:291)
    [javac]     at com.sun.tools.javac.main.Main.compile(Main.java:282)
    [javac]     at com.sun.tools.javac.Main.compile(Main.java:81)
    [javac]     at com.sun.tools.javac.Main.main(Main.java:66)

最佳答案

我敢打赌它适用于所有领域。对我来说,它确实是这样工作的:当我复制你的示例时,我有一堆 getter 和 setter。

您正在使用的编译器可能存在 Lombok 错误。提交包含所有详细信息的错误。

更新

JLS第8.3章说得很清楚:

More than one field may be declared in a single field declaration by using more than one declarator; the FieldModifiers and Type apply to all the declarators in the declaration.

它对我来说适用于 Eclipse 和 Gradle。我正在使用 Lombok 1.12.7(更准确地说,从 2014 年 5 月 1 日提交 e890428),但这确实不重要。自 1.12.6 以来,我看不到任何此类更改,我敢打赌它总是以“正确”的方式工作。

关于java - 使用 lombok v 0.9.2 注释字段列表而不是单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23812105/

相关文章:

java - 带有 json 注释的 Lombok @SuperBuilder 示例

eclipse - 如何让 Gradle 将 Lombok 添加到其项目和外部依赖库中?

Javac 无法在具有公共(public)枚举的静态嵌套类上编译注释

java - lombok生成代码的格式化

java - Lombok + jackson 不可变

java - 在表格单元格中查找单击按钮的行索引

java - 任何人都可以解释我下面的 RandomString

java 嵌入式 OS X 应用程序 VS 系统安装的 Java

java - 在android中使用类将数据绑定(bind)到listview

java - dynamoDb - 如果没有类似的项目已添加到表中,则添加新项目