使用不可变项时,将注释从接口转到生成的java类

使用不可变项时,将注释从接口转到生成的java类,java,immutables-library,Java,Immutables Library,我在Java接口中使用Immutables()来生成构建器和不可变对象。我创建了一个名为@Primary(表示哪个属性是Primary字段)的自定义方法级注释,我用它在Immutable接口中注释我的一个方法。我在由immutables创建的生成的java类中没有看到注释。我试着看BYOA(带上你自己的注释),但那没有帮助 有没有办法将@Primary注释放到生成的不可变java类上 更新(基于肖恩的以下建议) 我现在有一个基于 package info.java package com.myp

我在Java接口中使用Immutables()来生成构建器和不可变对象。我创建了一个名为@Primary(表示哪个属性是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-info.java文件。这个文件的内容应该是什么。你能让我知道我贴在上面的样本有什么不正确吗?谢谢肖恩,现在可以工作了。对不起,package-info.json是一个输入错误。package-info.json?该文件应称为package-info.java。您不应该在这里定义自定义注释,而应该为包添加注释(参见我的答案)