这几天温习了一下关于 java 反射 的内容,
发现JAVA 提供了 动态代理 的 默认实现(以前没用到过),
主要由 Proxy 类,InvocationHandler 接口(在 java.lang.reflect 包中)组成。
下面 演示一个使用 Proxy 和 InvocationHandler 类实现动态代理 的例子,
这个动态代理 对 被代理对象的方法执行时间进行计时,并将执行时间打印输出到控制台。
1,被代理类 的接口 Proxied
Java代码
package Test1;
// 被代理类 需实现的 接口
public interface Proxied {
void doSomething();
void doSomethingElse(String str);
}
2,一个 Proxied接口 的实现类(被代理类)
Java代码
package Test1;
public class ConcreteProxied implements Proxied {
@Override
public void doSomething() {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
System.err.println("Error : InterruptedException");
}
System.out.println(this.getClass().getSimpleName()
+ " >> doSomething .");
}