Question

Pour mon robot Google Wave, l'événement onDocumentChanged je veux appliquer un filtre comme suit:

@Capability(filter = FILTER)
@Override
public void onDocumentChanged(DocumentChangedEvent event) {
    ...
}

Je veux que le filtre à générer la première fois que le robot est exécuté, que je suis en train de faire comme suit:

private static final String FILTER = generateFilter();

private static final String generateFilter(){
    ...
}

Cependant, il se plaint FILTER est pas une expression constante lorsqu'il est utilisé dans les @Capability.

generateFilter () retourne la même chaîne à chaque fois qu'il est appelé, je ne l'utiliser pour créer la chaîne de sorte que lorsque je fais des changements, je ne suis pas à vous soucier de la mise à jour du filtre.

Maintenant, je pourrais aller à ce sujet tout faux, alors demandé si quelqu'un savait ce que je fais mal, ou connaissait une meilleure façon dont je pourrais générer une expression constante de la fonction.

Était-ce utile?

La solution

Je ne suis pas familier avec Google Wave, mais statique initialiseur pourrait être acceptable, comme le montre ici et décrit ci-dessous.

private static final String FILTER;
static { FILTER = "..."; }

Addendum: Sur un examen plus approfondi, cette approche est pas possible, comme valeur d'annotation doit être (entre autres) a expression constante .

Autres conseils

Le compilateur a besoin de la valeur Contant dans l'annotation au moment de la compilation et votre initialisation se produira, je pense au moment de l'initialisation de l'application.

Vous pouvez probablement le faire comme ceci:

private static final String FILTER = "YOUR STRING";

private static final String generateFilter() {
   return FILTER;
}

De cette façon, si vous avez besoin de changer et vous inquiétez pas, vous allez la la méthode et de là à la valeur constante:)

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top