黑马程序员_java代理

---------------------- android培训java培训、期待与您交流! ----------------------

 

所谓代理就是一个中间人,例如当调用一个类的方法时不是直接去调用而是通过调用此类的代理类来实现相同的功能。

通过使用代理,可以增加比原有方法更丰富的功能。

直接写个例子:使用ArrayList的代理类实现ArrayList的全部方法

package com.heimatest.three;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ArrayProxy {

	public  List getArrayListProxy() {
		//实例化动态代理
		List proxy=(List)Proxy.newProxyInstance(
				List.class.getClassLoader(),
				new Class[]{List.class}, 
				new InvocationHandler(){
					//被代理的对象target
					ArrayList target=new ArrayList();
					/**
					 * @param proxy 代理
					 * @param method 代理实现的方法
					 * @param args   方法中的参数
					 */
					public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {
						long beginTime=System.currentTimeMillis();//获得method执行的开始时间
						Object reVal= method.invoke(target, args);
						long endTime=System.currentTimeMillis();	//获得method执行的结束时间
						System.out.println("执行"+method.getName()+"方法花费时间为: "+(endTime-beginTime)+"毫秒");
						return reVal;//返回method返回值
					}
				});
		return proxy;
	}

}


 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值