使用Immutables时,从接口到生成的java类进行注释

我在我的Java接口中使用Immutables( http://immutables.org )来生成构建器和不可变对象。 我创建了一个名为@Primary的自定义方法级别注释(表示哪个属性是主要字段),我用它来注释Immutable接口中的一个方法。 我没有看到由immutables创建的生成的java类中的注释。 我试着看BYOA(带自己的注释),但这没有帮助。

有没有办法将@Primary注释放到生成的不可变java类上?

更新(根据肖恩的建议)

我现在有一个基于下面的配置

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应该在自己的文件中声明。 我不确定上面的配置是否正确。 请问你能告诉我哪里出错了吗?

您可以使用@Style注释配置要传递的注释,您可以在包级别使用它。

例如,在任何包中创建一个名为package-info.java的文件,并使用它进行注释

 @Style(passAnnotations=Primary.class) 

请参阅: 样式自定义 (解释存储@Style注释的位置,但未提及passAnnotations机制)

这是一个示例package-info.java文件:

 @Style(passAnnotations = YourAnnotation.class) package com.yourapp; import com.yourapp.annotations.YourAnnotation; import org.immutables.value.Value.Style; 

请注意,注释位于package声明之上,下面是import

Interesting Posts