0

定型コードの生成を減らすために、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 ロンボクを使用した ant ビルドでは失敗します。1.12.6 ロンボク バージョンで単純なケースをテストしたところ、動作しました。プロジェクト全体でロンボクを広く使用しており、スタック トレースはコード内で何も言及していないため、私のコードのどこでこれがくすぐられているかを判断するのは困難です。

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)
4

1 に答える 1