Domanda

Per il mio robot di Google Wave, l'evento onDocumentChanged voglio applicare un filtro come segue:

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

Voglio il filtro da generare la prima volta che il robot viene eseguito, che sto cercando di fare nel modo seguente:

private static final String FILTER = generateFilter();

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

Tuttavia, si lamenta filtro non è un'espressione costante quando utilizzato entro @Capability.

generateFilter () restituirà la stessa stringa ogni volta che viene chiamato, sto solo usando per creare la stringa in modo che quando faccio i cambiamenti, non ho bisogno di preoccuparsi per l'aggiornamento del filtro.

Ora potrei andare su questo tutto sbagliato, quindi chiesti se qualcuno sapeva quello che sto facendo male, o conosceva un modo migliore in cui ho potuto generare un'espressione costante dalla funzione.

È stato utile?

Soluzione

Sono familiarità con Google Wave, ma un statica inizializzatore potrebbe essere accettabile, come mostrato qui e riportate qui di seguito.

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

Addendum: Su un esame più approfondito, questo approccio è non è possibile, come un valore annotazione deve essere (tra le altre cose) un un'espressione costante .

Altri suggerimenti

Il compilatore ha bisogno il valore contant in l'annotazione in fase di compilazione e la vostra inizializzazione avverrà penso che al momento inizializzazione dell'applicazione.

Si potrebbe probabilmente fare in questo modo:

private static final String FILTER = "YOUR STRING";

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

In questo modo se avete bisogno di cambiare e non preoccupatevi si andrà il metodo e da lì al valore costante:)

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top