J'utilise Immutables (http://immutables.org) dans mon interface Java pour générer des générateurs et des objets immuables. J'ai créé une annotation de niveau de méthode personnalisée appelée @Primary (indiquant quel attribut est le champ principal) que j'ai utilisé pour annoter l'une de mes méthodes dans l'interface Immutable. Je ne vois pas l'annotation dans la classe Java générée créée par immutables. J'ai essayé de regarder BYOA (apportez votre propre annotation) mais cela n'aide pas.Transférer l'annotation de l'interface à la classe Java générée lors de l'utilisation de Immutables
Existe-t-il un moyen d'obtenir l'annotation @Primary sur la classe Java immutable générée?
MISE À JOUR (Basé sur la suggestion de Sean ci-dessous)
J'ai maintenant une configuration ci-dessous basé sur
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 {}
Annotation primaire
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 {
}
Je vois une erreur dans package-info.json où il est dit que MyStyle doit être déclaré dans son propre fichier. Je ne suis pas sûr que la configuration ci-dessus est correcte. S'il vous plaît pouvez-vous conseiller où je vais mal?
package-info.json? Le fichier est supposé s'appeler package-info.java. Et vous ne devriez pas définir une annotation personnalisée ici, mais plutôt annoter le paquet (voir ma réponse) –