Pregunta

Para mi robot de Google Wave, en el caso onDocumentChanged quiero aplicar un filtro de la siguiente manera:

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

Quiero que el filtro se genera la primera vez que se ejecuta el robot, que yo estoy tratando de hacer de la siguiente manera:

private static final String FILTER = generateFilter();

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

Sin embargo, se queja del filtro no es una expresión constante cuando se utiliza dentro de @Capability.

generateFilter () devolverá la misma serie cada vez que se llama, yo sólo estoy usando para crear la cadena de modo que cuando hago cambios, no tiene que preocuparse acerca de la actualización del filtro.

Ahora podía irme de este mal, por lo que se preguntó si alguien sabía lo que estoy haciendo mal, o sabía una mejor manera en la que podría generar una expresión constante de la función.

¿Fue útil?

Solución

Estoy familiarizado con Google Wave, sino un estática inicializador podría ser aceptable, como se muestra aquí y se describe a continuación.

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

Adición: En un examen más detenido, este enfoque es no es posible, como un valor de anotación debe ser (entre otras cosas) un expresión constante .

Otros consejos

El compilador necesita el valor contant en la anotación en tiempo de compilación y su inicialización va a pasar, creo que en el momento inicialización de la aplicación.

Probablemente podría hacerlo de esta manera:

private static final String FILTER = "YOUR STRING";

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

De esta forma si necesita cambiar y no se preocupe usted irá el método y desde allí hasta el valor constante:)

.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top