Maison  >  Article  >  Java  >  Quel est le principe du mécanisme de réflexion Java

Quel est le principe du mécanisme de réflexion Java

coldplay.xixi
coldplay.xixioriginal
2020-10-23 11:04:0747473parcourir

Principe du mécanisme de réflexion Java : 1. Pour n'importe quelle classe, vous pouvez connaître toutes les propriétés et méthodes de cette classe, et pour n'importe quel objet, vous pouvez appeler n'importe laquelle de ses méthodes ; classes C'est aussi un objet ; 3. Lorsque [Animal.class] est sur le disque dur, c'est un fichier Une fois chargé en mémoire, il peut être considéré comme un objet.

Quel est le principe du mécanisme de réflexion Java

Principe du mécanisme de réflexion Java :

Le concept de mécanisme de réflexion :

signifie qu'à l'état d'exécution, pour n'importe quelle classe, vous pouvez connaître toutes les propriétés et méthodes de cette classe, et pour n'importe quel objet, vous pouvez appeler n'importe laquelle de ses méthodes. Ce type d'acquisition dynamique d'informations, et appel dynamique d'objets La fonction de la méthode est appelée le mécanisme de réflexion du langage Java

2. Application du mécanisme de réflexion :

Générer un proxy dynamique et. Programmation orientée tranche (ajouter avant et après l'appel de la méthode Stack frame).

3. Le principe du mécanisme de réflexion :

1. concept : tout est un objet ---- les classes sont aussi des objets.

2. Ensuite, connaissez le contenu de la classe : méthode du champ constructeur du modificateur.

3. Lorsque Animal.class est sur le disque dur, c'est un fichier Lorsqu'il est chargé dans la mémoire, vous pouvez Il est considéré comme un objet, un objet de java.lang.class.

Lors de l'exécution du programme. , un objet Animal.class est généré lorsqu'il est instancié. Quelle est la différence entre les deux objets ?

Comme indiqué ci-dessous, l'objet Animal.class ci-dessus est un objet de java.lang.class ; un objet généré par instanciation de Animal.class

Quel est le principe du mécanisme de réflexion Java

4 Lorsque Animal.class est chargé dans la JVM, comment la JVM identifie-t-elle les méthodes, variables membres, méthodes de construction, etc. contenues dans Animal.class ?

Comme indiqué ci-dessous, les variables membres dans l'objet instancié de Animal.class sont fur color = red lorsque

est chargé ; en mémoire, la couleur de la fourrure = null, qui est attribuée au rouge lorsqu'elle est instanciée

Quel est le principe du mécanisme de réflexion Java

Animal.class La propriété de couleur du pelage est une valeur d'attribut de Field pour java.lang. .class, et coat color est également un objet pour java.lang.class. C'est pourquoi le mécanisme de réflexion obtient dynamiquement des informations et appelle dynamiquement des méthodes objet

L'image suivante est la méthode dans Java.lang.class.

Quel est le principe du mécanisme de réflexion Java

Quel est le principe du mécanisme de réflexion Java

Quel est le principe du mécanisme de réflexion Java

en java Dans .lang.class, la couleur du pelage est une valeur d'attribut de Field. Toutes les méthodes, variables membres, constructeurs et modificateurs dans Animal sont écrits selon les standards de java.lang.class, sinon une erreur sera signalée lors de la compilation

Quel est le principe du mécanisme de réflexion Java

4. . Exemple simple de code de mécanisme de rayonnement

public class _14_ReflectTest07
{
     public static void main(String[] args) throws Exception{
         //1.获取类
         Class c = Class.forName("_12_CustomerService");
         //获取某个特定的方法
         //通过:方法名+形参列表
         Method m = c.getDeclaredMethod("login",String.class,String.class);
         //通过反射机制执行login方法.
         Object o = c.newInstance();
         //调用o对象的m方法,传递"admin""123"参数,方法的执行结果是retValue
         Object retValue = m.invoke(o, "admin","123");
         System.out.println(retValue); //true
     }
}
 
 
 
public class _12_CustomerService
{
     //登录
     public boolean login(String name,String pwd){
         if("admin".equals(name) && "123".equals(pwd)){
              return true;
         }
         return false;
     }
     //退出
     public void logout(){
         System.out.println("系统已安全退出!");
     }
}

Recommandations d'apprentissage associées : Tutoriel de base de Java

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:A quoi sert Java split()Article suivant:A quoi sert Java split()