J'aimerais pouvoir implémenter une méthode à l'exécution appelée avant qu'un objet exécute les initialisateurs. Cela me permettra de définir des champs utilisés lors de l'initialisation.
Voici un exemple: p> Je finirai probablement à utiliser des aspects, mais j'aimerais savoir s'il y a une voie pure Java. P> < / p>
3 Réponses :
Voulez-vous dire quelque chose comme celui-ci en supposant qu'il compilerait (ce qu'il ne le fait pas):
Il ressemble à ce que vous voulez être Proxies dynamiques a >, qui ont été disponibles depuis Java 1.3. Je suis d'accord avec Stephen C: Pourquoi voulez-vous faire cela? Je soupçonne qu'il peut y avoir un moyen plus facile. Je soupçonne ce qui peut mieux fonctionner pour vous est le Stratégie A> ou Commande motif. Dans ce cas, le code personnalisé est en sa propre petite classe: p> qui est attribué à la classe principale ou enroule la classe principale (en fonction du besoin). < / p> p>
Je ne sais pas comment je pourrais implémenter cela puisque les proxies implémentent des interfaces. Je dois mettre en œuvre une méthode d'une classe dans mon cas. Pourriez-vous être plus précis?
La prochaine étape consiste à regarder le code de Mockito ( Mockito.org ), car ils ont du code pour simuler des classes en béton. , qui semble être similaire à ce que vous voulez. Je pourrais peut-être vous aider avec cela pendant le week-end.
Ce que vous essayez de faire serait créer une nouvelle classe intérieure anonyme qui est une sous-classe de certaines classes que vous connaissez uniquement au moment de l'exécution. La réflexion ne peut pas résoudre ce problème. p>
Les proxy dynamiques pourraient ... Si vous essayiez de mettre en place une interface chargée de manière dynamique. P>
Les seules autres approches que je peux penser sont d'utiliser la génération / compilation / compilation de code source dynamique. Et les deux vont être très compliqués. Et ni ne comptent ni pure java. P>
Mon conseil serait de jeter un coup d'œil à ce que vous essayez de réaliser. (Votre question ne donne aucune indication sur ce que cela pourrait être, il est donc difficile d'offrir des suggestions pratiques.) P>
Je suis en cours d'exécution dans les initialistes qui exigent que les champs soient initialisés avant l'exécution des initialisateurs. Le conceptuel est que je charge une vue, la logique de vue est dans l'initialiseur et je souhaite définir les attributs de modèle avant la création de la vue.