java的动态代理分析实用

网友 分享 时间:

【导读预览】此篇优秀范文“java的动态代理分析实用”由阿拉题库网友为您整理分享,以供您参考学习之用,希望此篇资料对您有所帮助,喜欢就复制下载支持吧!

java的动态代理分析篇1

引导语:在使用动态代理类时,我们必须实现invocationhandler接口,以下是百分网网友分享给大家的java动态代理,欢迎阅读了解!

java代码

package test1;

// 被代理类 需实现的 接口

public interface proxied {

void dosomething();

void dosomethingelse(string str);

}

java代码

package test1;

public class concreteproxied implements proxied {

@override

public void dosomething() {

try {

(100);

} catch (interruptedexception e) {

n("error : interruptedexception");

}

n(ss().getsimplename()

+ " >> dosomething .");

}

@override

public void dosomethingelse(string str) {

try {

(150);

} catch (interruptedexception e) {

n("error : interruptedexception");

}

n(ss().getsimplename()

+ " >> dosomethingelse , argument = " + str + ".");

}

}

java代码

package test1;

import tionhandler;

import ;

public class timeinginvocationhandler implements invocationhandler{

//被代理的对象

private object proxied;

public timeinginvocationhandler(object proxied){

d = proxied;

}

// 参数 proxy 表示代理类的对象

// 参数 method 表示被代理类 和 代理类 都实现的接口 的方法对象

// 参数 args 表示方法 method 的参数数组

@override

public object invoke(object proxy, method method, object[] args)

throws throwable {

n(laringclass().getname());

long currenttimemillis = ttimemillis();

object ret = (proxied, args);

n(ss().getsimplename()+" >> wastes time : "

+(ttimemillis() - currenttimemillis)+"ms");

return ret;

}

}

java代码

package test1;

import ;

public class testproxy {

public static void main(string[] args) {

proxied proxied = new concreteproxied();

thing();

thingelse("only a string");

// 生成一个代理实例,这个代理实现了 proxied 接口

// 对这个代理(proxy)的`方法的调用 会 重定向到 timeinginvocationhandler 的 invoke 方法

proxied proxy = (proxied) xyinstance(

.getclassloader(), // 类加载器

new class[] { }, // 代理要实现的接口

new timeinginvocationhandler(proxied) // 调用处理器

);

thing();

thingelse("only a string");

}

}

运行test类,输出如下:

concreteproxied >> dosomething .

concreteproxied >> dosomethingelse , argument = only a string.

d

concreteproxied >> dosomething .

timeinginvocationhandler >> wastes time : 110ms

d

concreteproxied >> dosomethingelse , argument = only a string.

timeinginvocationhandler >> wastes time : 156ms

s("content_relate");

java的动态代理分析相关文章:

1.

java使用动态代理来实现aop

2.

几分钟理解java中的动态代理

3.

java利用反射实现动态代理实现代码

4.

关于java动态实现的方法

5.

java动态方法调度实例

6.

java的动态考试系统的设计

7.

java中如何实现显示动态的时间

8.

java中静态绑定和动态绑定的区别

9.

jni是怎样java调用c动态库

48 1533022
");