学习动态代理stepbystep(5)[应用jdk中的动态代理]

如果你和我一样是初学者,只想用动态代理,其实前4篇文章看不看都可以的。只看这篇,知道怎么用就可以了呗。。。

不过,说实话,如果有了前面的基础,确实是会很多哦,我在网上找动态代理应用的实例,发现它代码根本就没把动态代理的精神体现出来,不过咱只对事,不对人,哈哈~~


1.一个被代理的类的接口。

package com.jdkproxy.test;
public interface Interface {
public abstract String say(String s);
}

2.想被代理的类:

package com.jdkproxy.test;
public class People implements Interface
{
@Override
public String say(String s) {
System.out.println(s);
return s;
}
}

3.我们想要的代理处理逻辑:注意哦,如果你在Myeclipse中先写了对jdk的模拟,这里的包不要引错了。

package com.jdkproxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class DynamicProxy  implements InvocationHandler{
private Object target;
public DynamicProxy(Object target) {
super();
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("我的名字是:");
method.invoke(this.target, args);
System.out.println("大家好,希望朋友们多多指教!");
return null;
}
}

好了。。。这就算完事了。。

写个测试吧:

package com.jdkproxy.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
People pl =new People();
InvocationHandler dp = new DynamicProxy(pl);

注意这个方法,jdk的与我们自己写的参数是不一样滴
Interface it = (Interface)Proxy.newProxyInstance(Interface.class.getClassLoader(),People.class.getInterfaces(),dp);
it.say("漂泊小柒");
}
}

输出结果:

我的名字是:
漂泊小柒
大家好,希望朋友们多多指教!

O了......java....动态代理....先到这吧....


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值