gpt4 book ai didi

java - 使用 Immutables 时将接口(interface)中的注释转发到生成的 java 类

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:12:13 25 4
gpt4 key购买 nike

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

有没有办法在生成的不可变 java 类上添加 @Primary 注释?

更新(根据以下 Sean 的建议)

我现在有一个基于

的配置

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 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 位于下方。

关于java - 使用 Immutables 时将接口(interface)中的注释转发到生成的 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com