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

时间:2014-05-22 16:11:41

标签: java lombok

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

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

但注释只会影响列表中的第一个字段。有没有办法让它影响整个列表而不像

那样分开
@Getter @Setter
private String a;

@Getter @Setter
private String b;

请注意,我无法对该类进行注释,因为有许多字段需要有限的访问权限,而某些字段我只想获取访问权限。基本上,我在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)

1 个答案:

答案 0 :(得分:1)

我敢打赌它适用于所有领域。对我而言,它确实是这样的:当我复制你的例子时,我得到了许多吸气剂和制定者。

您正在使用的编译器可能存在Lombok错误。提交所有细节的错误。

更新

JLS的第8.3章明确地说:

  

通过使用多个声明符,可以在单个字段声明中声明多个字段; FieldModifiers和Type适用于声明中的所有声明符。

它适用于Eclipse和Gradle。我使用的是Lombok 1.12.7(更确切地说,从2014-05-01提交e890428),但这真的不重要。自1.12.6以来,我无法看到任何这样的变化,我敢打赌,它总是意味着要做的就是"对"方式。