JAVA et de réflexion proxy dynamique

       Des travaux récents en contact avec un mode proxy dynamique JAVA, son principe est l'utilisation de la réflexion JAVA à l'exécution pour générer des classes proxy, les avantages de l'agent dynamique par rapport à l'agent statique est un plus grand nombre de classe quand vous devez être approximé, peut être réduite phase de développement du programme d'un grand nombre de classes prédéfinies proxy, et le travail généré par la classe proxy sur la scène de telle sorte que le programme est exécuté processus JVM.

       proxy statique AIDL sera utilisé dans le développement, le programme serveur AIDL défini l'interface, puis programme client AIDL appelle le programme serveur via une interface de classe proxy pour atteindre l'objectif de la communication.

       contact dynamique actuelle agent MVVM sous le modèle de développement, l'expéditeur du message classe proxy de rappel en passant le message à la classe réelle de rappel, et finalement transféré au destinataire, rappel puisque le nombre de très grandes, de sorte que les proxies dynamiques, suit comme:

Proxy.newProxyInstance (

target.getClass (). getClassLoader (), target.getClass (). getInterfaces (), nouvelle InvocationHandler () {

@Override publique invocation de l'objet (proxy de l'objet, méthode Méthode, Object [] args) throws Throwable

{Return null; }})

Ce qui Targé être un proxy pour la classe, la mise en œuvre de proxy dynamique de base est la classe InvocationHandler.

       La technologie de base utilisée dans proxy dynamique est le reflet et le polymorphisme, il suffit de se rappeler lors de l'apprentissage enseignant JAVA pour expliquer les variables et les méthodes par la propriété privée ne sont pas en JAVA d'autres classes ne sont pas accessibles et méthode modifiée est mis en œuvre par la réflexion.

        À savoir, au moment de l'exécution lorsque le premier programme JVM pour exécuter un nouvel objet, comme personne personne = new Personne (); 

        A ce stade, la machine virtuelle Java pour charger compilé fichier Person.class et générer un objet de classe, une classe n'a qu'un seul objet de classe, reflet de la nature qui est l'inverse de l'objet personne pour obtenir des informations par cet objet de classe.

        Code réflexion exemple, en supposant personne attribut classe id est privé, l'attribut id peut être modifié par le code suivant:

        Classe personClazz = Class.forName ( "Personne");

        personne = personClazz.newInstance () personne;

        Filed id = personClazz.getDeclaredFiled ( "id");      

         id.setAccesible (true);

         id.set (personne, 1);

        Le polymorphisme est la définition d'une interface parent ou parent, passer une variable superclasse dans la phase de développement dans la phase de développement du programme, JVM chargé dynamiquement lors de l'exécution d'une sous-classe, et appeler les propriétés pertinentes et sous-fonctions.

        Résumé: Lorsque certaines classes ne veulent pas être exposés directement à d'autres catégories admissibles pour le fonctionnement du programme, vous pouvez utiliser le mode proxy, lorsque le nombre de classes qui ont besoin d'être agent proxy statique peut être utilisé, et si doit être utilisé un grand nombre de proxies dynamiques, proxy principe dynamique est un programme JAVA à l'exécution JVM peut obtenir des informations vers les points de référence d'objets de classe parent à leur classe.

Publié 11 articles originaux · louange gagné 2 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/zhengyin_tmac/article/details/104961857
conseillé
Classement