11
votes

Quand les annotations Java sont-elles exécutées?

Je cherche juste à écrire une annotation qui peut exécuter au moment de l'exécution, avant ou immédiatement après qu'une méthode de service soit invoquée.

Je ne sais pas s'ils sont exécutés au moment de l'exécution ou à la compilation.


0 commentaires

7 Réponses :


13
votes

Annotations Ne pas exécuter; Ce sont des notes ou des marqueurs qui sont lus par différents outils. Certains sont lus par votre compilateur, comme @override ; D'autres sont intégrés dans les fichiers de classe et lus par des outils tels que Hibernate au moment de l'exécution. Mais ils ne font rien eux-mêmes.

Vous pensez peut-être penser à assertions < / em> à la place, qui peut être utilisé pour valider les conditions préalables et postales.


1 commentaires

Les lecteurs doivent savoir que les affirmations peuvent être (et sont par défaut) désactivées au moment de l'exécution. Ne mettez pas de comportement critique de l'application dans les affirmations.



3
votes

Annotations n'a pas d'effet sur votre code, ils sont ici pour fournir des informations à évaluer par le compilateur ou d'autres outils.

Les annotations ont un certain nombre d'utilisations, parmi lesquelles:

Les informations pour le compilateur - Annotations peuvent être utilisées par le compilateur pour détecter des erreurs ou supprimer des avertissements.

Traitement du temps de compilateur et de déploiement - Les outils logiciels peuvent traiter l'annotation informations pour générer du code, des fichiers XML, etc.

Traitement d'exécution - Certaines annotations sont disponibles pour être examinées au moment de l'exécution.

Voir ce page .


0 commentaires

0
votes

Ils peuvent réellement être lus dans les deux environnements, en fonction de la stratégie de rétention que vous avez définie.


0 commentaires

8
votes

En réalité, lorsque vous définissez une annotation, vous devez spécifier le paramètre @rettion code>, qui définit si l'annotation est disponible dans le code source (source), dans les fichiers de classe (classe) ou Au moment de l'exécution (runtime).

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {}


0 commentaires

9
votes

Les annotations ne sont que des marqueurs. Ils ne sont pas exécutés et font quoi que ce soit.

Vous pouvez spécifier différentes stratégies de rétention:


0 commentaires

0
votes
  1. Les annotations ne sont que des marqueurs au code source. Ils seront utilisés par des outils tels que des processeurs IDE, COMPILER ou ANNOTATION.

  2. Vous pouvez définir avec @rettion si une annotation doit être évaluée dans la source, la classe ou l'exécution.

  3. Si vous souhaitez définir vos annotations possédées et que vous seul avez la connaissance de l'annotation à faire, vous devez également écrire un processeur d'annotation. (Mais ce n'est pas simple - peut-être)


0 commentaires

1
votes

Cela dépend de la politique de rétention attachée avec cette annotation.

Une politique de rétention détermine à quelle annotation de points devrait être mis au rebut. Java a défini 3 types de politiques de conservation à travers Java.Lang.Annotation.RetantPolicy Enumération. Il a source , classe et exécution .

  • Annotation avec la stratégie de rétention Source sera conservée uniquement avec code source et jeté pendant la compilation.

  • Annotation avec la stratégie de rétention Classe sera conservée jusqu'à
    compiler le code et rejeté pendant l'exécution.

  • Annotation avec la stratégie de rétention Runtime sera disponible pour le JVM à travers l'exécution.

    La politique de rétention sera spécifiée à l'aide de Java intégré Annotation @ReTENTION , et nous devons adopter la politique de rétention taper. Le type de stratégie de conservation par défaut est classe .


0 commentaires