2010-11-16 24 views
2

Est-il possible d'ajouter des "hooks" à une classe via l'amélioration bytecode qui exécute le code chaque fois qu'un champ de classe est lu ou écrit? Par exemple, je voudrais définir automatiquement un indicateur «sale» chaque fois qu'une nouvelle valeur est affectée à un champ.Amélioration du bytecode pour les champs d'une classe

Si oui, quelles bibliothèques sont les mieux adaptées pour implémenter cette fonctionnalité?

+0

Les getters et setters n'ont-ils pas pour but d'encapsuler des fonctionnalités comme celles-ci? – Adamski

+0

Oui, mais je veux éviter le codage manuel des fonctionnalités qui devront être répétées pour chaque champ –

Répondre

1

Voici comment générer des getters et des setters en utilisant le framework ASM. Cela devrait vous aider à démarrer.

Vous pouvez même laisser votre crochet bytecode-rewriter dans la classe chargeur et faire la réécriture à la volée.

2

Je vous suggère de lire sur AspectJ. C'est probablement l'outil que vous recherchez.