反射:通过类名获取该类的所有成员方法、变量,或者实例化对象等。
例:Class B 访问Class A 的retnum方法
package com.ysu.fams.webservices; public class A { int count = 40; public int retnum(int i){ count = i; return count; } } package com.ysu.fams.webservices; import java.lang.reflect.Method; public class B{ public static void main(String[] args) throws Exception{ //获取A类对应的一个class对象 Class cl = Class.forName("com.ysu.fams.webservices.A"); //获取A类对应的一个实例化对象 Object object = cl.newInstance(); //获取A类对应的retnum方法对应的一个对象实例 Method method = cl.getMethod("retnum", int.class); //调用A类方法获取结果 Object result = method.invoke(object, 2); System.out.println(result); //输出结果:2 } }
代理:为其他对象提供一种代理以控制对这个对象的访问,通过代理类访问真实的对象。
public interface Hello{ public String getHello(String str); public String test(); } public class A implements Hello{ public String getHello(String str) { // TODO Auto-generated method stub return str; } public String test(){ return "test"; } } public class B implements InvocationHandler{ private Object obj; public B(Object obj){ this.obj = obj; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { // TODO Auto-generated method stub System.out.println("拦截方法:"+method.getName()); return method.invoke(obj, args); } public static void main(String[] args) throws Exception{ //真实对象(即被代理对象) Hello hello = new A(); //为真实对象制定一个调用处理器 InvocationHandler h = new B(hello); //获得真实对象(hello)的一个代理类 Object objHello = Proxy.newProxyInstance(hello.getClass().getClassLoader(),//真实对象的类加载器 hello.getClass().getInterfaces(),//真实对象实现的所有接口 h //真实对象的处理器 ); if(objHello instanceof Hello){ Hello he = (Hello)objHello; String result = he.getHello("你好!"); System.out.println(result); }else{ System.out.println("objHello isn't a Hello"); } } }
相关推荐
在"JAVA反射与代理"这个主题中,我们将深入探讨这两个核心概念。 首先,让我们了解反射的基本用法。当一个类的名称在运行时才被知道,反射可以帮助我们动态地创建对象。例如,我们可以使用`Class.forName()`方法...
### Java反射与代理实现AOP #### 一、AOP概念及应用场景 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程思想和技术,主要用于处理横切关注点问题,比如日志记录、性能统计、安全控制、事务处理、...
Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在Java中,反射机制的核心类包括`Class`、`Field`、`Method`和`Constructor`,它们分别代表类、...
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行方面发挥着关键作用。本文将深入探讨这两个概念及其在实际开发中的应用。 **Java反射** Java反射API允许程序在运行时检查类、接口...
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行上发挥着关键作用。本文将深入探讨这两个概念,以及如何在实际开发中利用它们。 首先,我们来理解Java反射(Reflection)。Java反射...
Java的反射机制与动态代理是Java编程中两个非常重要的高级特性,它们在许多实际场景中发挥着关键作用,如框架开发、插件系统、元数据处理等。下面将详细讲解这两个概念及其应用。 首先,Java的反射机制允许我们在...
Java反射是Java编程语言中的一个重要特性,它允许程序在运行时动态地获取类的信息并操作类的对象。在Java中,反射机制提供了强大的能力,包括在运行时检查类的结构、创建对象实例、调用方法以及访问和修改字段值。...
JAVA反射机制与动态代理.part04
详细讲解java的reflect包的,阐述反射机制及动态代理的细节问题。其中动态代理部分内容参考网上资料。读完此文,相信会对javaf反射机制有一个完整清楚的了解。尤其应该看看其他中代码举例部分。
Java反射和动态代理是Java编程中的重要特性,它们在实现高度灵活和动态的代码执行上发挥着关键作用。本文将深入探讨这两个概念及其在实际开发中的应用。 **Java反射** Java反射API允许程序在运行时检查类、接口、...
总的来说,Java反射机制和动态代理是Java平台强大而灵活的特性,它们使得Java程序能够在运行时具有更高的灵活性和可扩展性。然而,使用反射也可能带来性能开销和安全风险,因此在实际应用中需要权衡利弊,合理使用。
在这个主题中,我们将深入探讨Java反射和动态代理如何帮助我们实现IOC。 首先,让我们理解Java反射。反射允许程序在运行时检查类、接口、字段和方法的信息,并且能够动态地创建对象和调用方法。在IOC中,反射用于在...
java反射机制和动态代理的原理,熟悉反射机制和动态代理
Java反射和动态代理是Java编程中的重要特性,它们允许程序在运行时检查和操作类、接口、对象等的内部结构,以及动态地创建代理对象来处理特定任务。在这篇文章中,我们将深入探讨这两个主题,结合"reflections"这个...