Annotation Java exécuter une méthode au sein de l'annotation(déclaration d'utilisation pour android)
Je suis assez nouveau à l'annotation termes.
J'ai lu quelques sources et est venu à la conclusion que non répondu à ma question.
Peut-être que j'ai googlé l'utilisation de la mauvaise recherche. Peut-être que je donne sur, ou mayhbe im juste paumé..
De toute façon, ici, est le problème.
Je suis occupé à écrire une application qui nécessite rôle de "validation".
Pour cela je veux utiliser une annotation.
Donc quelque chose le long de la ligne de:
@interface Validate (){
}
Ce que j'ai de l'objectif à atteindre est sometihng le long des lignes de:
public @interface Validate() {
public Validate() {
//Do validation stuff
return true/false
}
}
Donc, fondamentalement, je veux définir des méthodes à l'intérieur de l'annotation.
Je veux être en mesure d'appeler
@Validate
public void methodThatRequiresAdminRole() {
doStuff();
}
Seul les admins devraient être en mesure de saisir cette méthode. Sinon, une erreur doit être généré.
donc si @valider renvoie la valeur true, la méthode doit être exécutée
Désolé si je suis vraiment clair. Je ne suis pas tout à fait sûr de savoir comment bien vous demander ce que je veux.
J'espère donc que les exemples de raconter les histoires.
L'espoir de lire les conseils et peut-être même une réponse bientôt.
Merci.
** EDIT **
Je besoin d'insister sur le fait que le code doit être utilisé sur une application android.
Donc, je préfère ne pas utiliser étrange cadres ne signifie pas pour android. Je n'ai aucun problème à ajouter une bibliothèque personnalisée qui donne la fonctionnalité sans aucune sorte de cadre d'application.
OriginalL'auteur Joey Roosing | 2011-09-22
Vous devez vous connecter pour publier un commentaire.
Les Annotations sont des méta données. Ce dont vous avez besoin pour écrire est un processeur d'annotation. Une annotation en lui-même ne peut accomplir la logique de validation. Le processeur d'annotation vais regarder les annotations et ensuite procéder à la validation et contrôle le flux de l'application. Ceci AFIN de répondre a une bonne explication Peut Annotations Java m'aider?
Vous avez également besoin d'annoter l'annotation @Retention(RetentionPolicy.RUNTIME), de sorte que l'annotation de l'information est conservée jusqu'à l'exécution.
Vous êtes les bienvenus. Consultez ce lien pour la mise en œuvre d'une simple annotation processeur horstmann.com/corejava/cj7v2ch13ex.pdf .
OriginalL'auteur Narendra Yadala
Remarque, cela peut être tout à fait hors-sujet. À l'aide de spring AOP avec, traitement des annotations est assez simple:
Créer un aspect:
Votre aspect:
Dans META-INF/aop.xml
Set-up temps de chargement de tissage
Au printemps contexte:
De s'assurer que le ressort de l'agent est de démarrer votre application:
OriginalL'auteur beny23
Je ne pense pas que vous pouvez atteindre cet objectif avec des annotations seul. Ils sont destinés à fournir des méta-informations sur les éléments de code et non pas la logique de traitement.
De mise en œuvre de la restriction sur la annoté méthodes d'invocation, vous aurez besoin de vérifier l'accès à la main à l'intérieur ou à l'extérieur de la méthode ou de l'injecter une vérification à l'aide de quelque chose comme http://www.eclipse.org/aspectj/
AspectJ peut être utilisé pour le développement android, mais elle est limitée à l'utilisation de la compilation de tissage de sens, vous ne pouvez contrôler l'exécution de méthodes que vous avez le code source pour.
Oui Annotations Java sont l'équivalent des .NET Attributs. Vous pouvez ajouter des annotations à des méthodes et ces annotations peuvent contenir des données, mais pas la logique de traitement qui est exécuté sur un appel de méthode par exemple. Ce n'est plus la préoccupation d'une dite aspect dans les termes de l'AOP.
Je suis à l'aide de PlayFramework et il a une annotation @Sécurisé qui va vérifier si le cookie existe, puis valide que témoin dans le cache de session de sorte qu'il peut être fait. Je ne suis pas exactement sûr que je n'arrive pas à voir comment ils le font en scala, mais je suis sûr qu'il peut être effectuée sans AspectJ
OriginalL'auteur Gandalf