web-dev-qa-db-fra.com

Supprimer le message "La valeur de l'attribut annotation doit être une expression constante"

J'utilise des annotations dans mon code et j'essaie d'utiliser la valeur qui détermine le temps d'exécution.

Je définis ma liste comme static final (Lst), et j'ajoute à cette liste des éléments.

Quand j'utilise lst.get(i), j'obtiens une erreur de compilation:

The value for annotation attribute must be a constant expression

Quelle est la solution à ce problème?

61
Cons

La valeur d'une annotation doit être une constante de temps de compilation, il n'y a donc pas de moyen simple de faire ce que vous essayez de faire.

Voir aussi ici: Comment fournir de la valeur à une annotation à partir d'un Java constant

Il est possible d’utiliser certains outils de compilation (ant, maven?) Pour le configurer si la valeur est connue avant d’essayer d’exécuter le programme.

43
zw324

Voici à quoi ressemble une expression constante Java:

package com.mycompany.mypackage;

public class MyLinks {
  // constant expression
  public static final String GUESTBOOK_URL = "/guestbook";
}

Vous pouvez l'utiliser avec des annotations comme suit:

import com.mycompany.mypackage.MyLinks;

@WebServlet(urlPatterns = {MyLinks.GUESTBOOK_URL})
public class GuestbookServlet extends HttpServlet {
  // ...
}
15
Benny Neugebauer