Valeurs d'annotations Java fournies de manière dynamique

Je veux fournir des annotations avec certaines valeurs générées par certaines méthodes.

J'ai essayé jusqu'à présent:

public @interface MyInterface {
    String aString();
}

@MyInterface(aString = MyClass.GENERIC_GENERATED_NAME)
public class MyClass {

    static final String GENERIC_GENERATED_NAME = MyClass.generateName(MyClass.class);

    public static final String generateName(final Class<?> c) {
        return c.getClass().getName();
    }
}

Pensée GENERIC_GENERATED_NAME est static finalil se plaint de ce que

La valeur de l'annotation attribut MyInterface.aString doit être une expression constante

Donc comment faire ?

source d'informationauteur thelost