java简单的动态代理示例

原创 2015年07月07日 14:11:48


1、定义一个接口Student,后面用于强转proxy实例类型

interface Student {
	public void study();
}

2、定义接口实现类StudentImpl

      对象调用getClass().getClassLoader(), getClass().getInterfaces(),用于proxy实例参数

public class StudentImpl implements Student {

	public void study() {
		System.out.println("woaixuexi");

	}

}

3、定义自己的MyInvocationHandle实现InvocationHandler,在此定义所要增加的方法

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class MyInvocationHandle implements InvocationHandler {
	private Object handler;
	
	public MyInvocationHandle() {
		super();
	}

	
	public MyInvocationHandle(Object handler) {
		super();
		this.handler = handler;
	}


	public Object invoke(Object arg0, Method arg1, Object[] arg2)
			throws Throwable {
		System.out.println("xuexiqianchifan");
		Object result = arg1.invoke(handler, arg2);
		System.out.println("shuijiao");
		return result;
	}

}

4、测试类

      new StudentImpl 对象,作为参数传入MyInvocationHandle,产生proxy实例,向下转型为Student,不能是StudentImpl

import java.lang.reflect.Proxy;

public class StudentTest {
	public static void main(String[] args) {
		StudentImpl st = new StudentImpl();
		MyInvocationHandle my = new MyInvocationHandle(st);
		Student p = (Student) Proxy.newProxyInstance(st.getClass().getClassLoader(), st.getClass().getInterfaces(), my);
		p.study();
	}
}


相关文章推荐

JDK动态代理简单示例

  • 2014年11月21日 17:33
  • 23KB
  • 下载

Java动态代理程序切片示例

  • 2014年05月07日 14:18
  • 8KB
  • 下载

利用动态代理实现AOP的简单示例(JDK和cglib分别实现)

公司组织的内部培训,里面留了一个思考作业:基于AOP的统一日志处理 要求实现一个AOP的技术雏形,能够实现方法的调用前、正常执行后、异常执行后以及执行后的日志输出;同时要求,对于Java API对象...

java 动态代理 简单实例

  • 2011年12月24日 13:52
  • 6KB
  • 下载

java 之 动态代理学习示例

import java.lang.reflect.Method; public interface Advice { public void beforeMethod(Method method...
  • EthanQ
  • EthanQ
  • 2012年02月26日 17:05
  • 486

JAVA实现动态代理的简单流程

  • 2011年09月27日 10:35
  • 1KB
  • 下载

Java反射机制详细示例及动态代理

反射可以在程序运行过程中动态获取类的相关信息,包括类由哪个类加载器进行加载,类中的成员变量,成员方法,访问修饰符,返回值类型,构造方法等等; 首先要获取类的Class对象.获取Class对象有三种方法...

Java中动态代理实现示例

动态代理就是利用java中的Proxy和Invocationhandler实现的。实现动态代理你可以在某个类的每个方法执行前后加上你想要执行的代码。比如,你想要测试方法执行时间,那么你可以写个动态代理...

动态代理示例

  • 2012年06月07日 17:41
  • 6KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java简单的动态代理示例
举报原因:
原因补充:

(最多只允许输入30个字)