JavaインタフェースでImmutables(http://immutables.org)を使用してビルダーと不変オブジェクトを生成しています。 @Primary(どの属性がプライマリフィールドであるかを示す)というカスタムメソッドレベルの注釈を作成しました。このメソッドは、不変のインターフェイスで自分のメソッドの1つに注釈を付けるために使用しています。私はimmutablesによって生成された生成されたJavaクラスの注釈を見ません。私はBYOA(自分の注釈を持ってくる)を見てみましたが、それは助けになりません。イミュラブルを使用しているときにインタフェースから生成されたJavaクラスへの転送アノテーションを持ちます。
生成された不変のJavaクラスに@Primaryアノテーションを取得する方法はありますか?
UPDATE私は今
package-info.java
package com.mypackage;
import com.mercuria.recon.custom.annotation.Primary;
import org.immutables.value.Value;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.PACKAGE, ElementType.TYPE})
@Retention(RetentionPolicy.CLASS) // Make it class retention for incremental compilation
@Value.Style(passAnnotations=Primary.class)
public @interface MyStyle {}
プライマリ注釈に基づいて、以下の設定を持っている
(以下ショーンの提案に基づく)
package com.mypackage.custom.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Primary {
}
package-info.jsonにMyStyleを自分のファイルで宣言する必要があるというエラーが表示されます。上記の設定が正しいかどうかわかりません。私はどこに間違っているのかアドバイスできますか?
package-info.json?このファイルは、package-info.javaと呼ばれることになっています。そして、そこにカスタムアノテーションを定義するのではなく、パッケージに注釈を付けるべきです(私の答えを参照してください) –