java动态代理简单实例。
来源:互联网 发布:企业计算机监控软件 编辑:程序博客网 时间:2024/04/30 08:23
package mytest;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class RunProxy {
public static void main(String[] args) {
A a = new B();
A proxy = (A) Proxy.newProxyInstance(
a.getClass().getClassLoader(),
a.getClass().getInterfaces(),
new ReadyInvocationHandler(a));
proxy.eat();
proxy.run();
}
=============================================================
interface A {
public void eat();
public void run();
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("B======eat");
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("B=====run");
}
//真实类对象
private Object B = null;
public ReadyInvocationHandler(Object realSubject) {
this.B = realSubject;
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
Object result = null;
System.out.println(proxy.getClass().getSimpleName());
System.out.println("动态代理结束");
return result;
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class RunProxy {
public static void main(String[] args) {
A a = new B();
A proxy = (A) Proxy.newProxyInstance(
a.getClass().getClassLoader(),
a.getClass().getInterfaces(),
new ReadyInvocationHandler(a));
proxy.eat();
proxy.run();
}
=============================================================
interface A {
public void eat();
public void run();
}
==========================================================
@Override
public void eat() {
// TODO Auto-generated method stub
System.out.println("B======eat");
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("B=====run");
}
}
==========================================================
//真实类对象
private Object B = null;
public ReadyInvocationHandler(Object realSubject) {
this.B = realSubject;
}
//该方法为自动调用。
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
Object result = null;
System.out.println(proxy.getClass().getSimpleName());
System.out.println("动态代理开始");
//利用反射调用真实类的方法。
System.out.println("动态代理结束");
return result;
}
}
总结动态代理步骤:第一个写一个接口,写一个真实类实现接口,第三写动态代理类。
$Proxy0
动态代理开始
B======eat
动态代理结束
$Proxy0
动态代理开始
B=====run
动态代理结束
- java动态代理简单实例
- java动态代理简单实例。
- java动态代理简单实例
- java动态代理【简单实例】
- 动态代理简单实例
- java动态代理实例
- java动态代理实例
- java动态代理实例
- JAVA动态代理实例
- Java动态代理实例
- Java 动态代理实例
- Java 动态代理实例
- 动态代理 简单实例二
- Java之动态代理类实现日志简单实例
- Java动态代理简单实例:老板与秘书
- java cglib动态代理 实例
- Java静态代理、动态代理实例
- Java静态代理、动态代理实例
- 从打飞机悟出的11条创业秘籍
- NAT模式下虚拟机不能上网
- 如何测量二极管的正负极
- 程序出错后……
- 实践:form表单的action路径加不加斜线
- java动态代理简单实例。
- 数学之路(3)-机器学习(3)-机器学习算法-神经网络[16]
- 启动tomcat时startup.bat一闪而过
- 机顶盒的种类有哪些?
- Ubuntu 12.04 64位 安装Google Chrome
- XCode4.3.3/4.2/4.3 + iOS5.1 无证书开发 、真机调试、生成IPA
- source insight的使用
- test22222222
- OpenRisc-50-or1200的freeze模块分析