为了生成更少的样板代码,我使用了 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)