我在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应该在自己的文件中声明。我不确定上面的配置是否正确。请问你能告诉我哪里出错了?
答案 0 :(得分:2)
您可以使用@Style
注释配置要传递的注释,您可以在包级别使用该注释。
E.g。在任何包中创建一个名为package-info.java的文件,并使用
进行注释@Style(passAnnotations=Primary.class)
请参阅:Style customization(解释存储@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
以下。