Maison >Java >javaDidacticiel >Explorez une compréhension plus approfondie des méthodes d'appel de réflexion Java
Une compréhension approfondie de la façon dont la réflexion Java est appelée nécessite des exemples de code spécifiques
Introduction :
La réflexion Java (Reflection) est un mécanisme puissant qui permet aux programmes d'obtenir dynamiquement des informations sur les classes et de manipuler des classes et des objets au moment de l'exécution. La classe principale de la réflexion Java est la classe Class, qui fournit une série de méthodes pour obtenir les constructeurs, méthodes, champs, etc. de la classe, et peut les appeler par réflexion. Cet article approfondira la méthode d'appel de la réflexion Java et donnera des exemples de code spécifiques.
1. Obtenir l'objet Class
En Java, il existe trois façons d'obtenir l'objet Class :
Class clazz = Person.class; Constructor constructor = clazz.getConstructor(String.class, int.class); Person person = (Person) constructor.newInstance("Tom", 18);
Class clazz = Person.class; Method method = clazz.getMethod("sayHello", String.class); Person person = new Person(); method.invoke(person, "World");
Class clazz = Person.class; Field field = clazz.getField("name"); Person person = new Person(); String name = (String) field.get(person); field.set(person, "Tom");
Class clazz = Person.class; Method method = clazz.getDeclaredMethod("privateMethod", int.class); method.setAccessible(true); Person person = new Person(); int result = (int) method.invoke(person, 10); Field field = clazz.getDeclaredField("privateField"); field.setAccessible(true); int value = (int) field.get(person);
Class clazz = Person.class; Person person = (Person) clazz.newInstance();
class ProxyHandler implements InvocationHandler { private Object target; public ProxyHandler(Object target) { this.target = target; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("Before invoke"); Object result = method.invoke(target, args); System.out.println("After invoke"); return result; } } Class clazz = Person.class; Person person = new Person(); InvocationHandler handler = new ProxyHandler(person); Person proxy = (Person) Proxy.newProxyInstance(clazz.getClassLoader(), clazz.getInterfaces(), handler); proxy.sayHello("World");
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!