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.
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
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
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.
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
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!