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?
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.
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 {
// ...
}