`

java动态代理的基本实现

 
阅读更多

1 目标类接口
package com.cgm.invokeclass;

public interface ITeacher {
public void talk();
}




2.目标类
package com.cgm.invokeclass;

public class Teacher implements ITeacher{

int num=0;

public Teacher(int num){this.num=num;}


public void talk(){
System.out.println("laoshi zai jiang"+num);
}
     
}


3代理类

package com.cgm.invokeclass;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class ProxyDemo {
public static void main(String[] args) throws Exception {
final Object o=new Teacher(1);              //代理对象的加载器
    Object proxyObj=Proxy.newProxyInstance(ProxyDemo.class.getClassLoader(),
        //ITeacher.class.getClasses(),
        //目标类的接口
        new Class[]{ITeacher.class},
        //句柄 用户的每一次调用都能拦截到她的方法
        new InvocationHandler() {  //匿名内部类
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("你执行的方法是"+method.getName());
Object oValue=method.invoke(o, args);
return oValue;
}
});
   
    ITeacher  itacher=(ITeacher) proxyObj;
    itacher.talk();
    String ss=itacher.toString();
    System.out.println("o========="+o);
    System.out.println("ss========="+ss);  //com.cgm.invokeclass.Teacher@a83b8a
    System.out.println("ss========="+itacher.getClass());  //$Proxy0  动态代理类
                  }
                }


结构见图:

     目标类接口(父类)
     /  \
    /    \
目标类(子类)    代理类(内存生成子类的代理对象)


分享到:
评论

相关推荐

    利用Java的反射与代理实现IOC模式

    利用Java的反射与代理实现IOC模式 在Java中,其反射和动态代理机制极其强大,我们可以通过其反 射机制在运行时获取信息。而代理是一种基本的设计模式,它是一种为了提供额外的或不同的操作而插入到真 实对象中的...

    JAVA 动态代理机制

    通过详细的一个Proxy实例,详尽的讲解了JAVA动态代理的实现和一些基本知识。

    Java动态代理在AOP中的应用

    本文首先介绍了AOP 的基本思想,然后针对它在JAVA 语言 中的实现,具体介绍了JAVA 的动态代理来怎样实现一个简单的AOP 容器

    Java动态代理简单应用

    概念  代理模式是基本的设计模式之一,它是开发者为了提供额外的或...  Java动态代理实现机制采用了反射的思想,有关于反射的基础知识,可以参见博客Java发射机制浅析。  原理  Spring核心AOP实现技术之一是采用

    JAVA实现excel的导出.zip

    用Java语言采用接口设计模式、代理设计模式、工厂设计模式实现对excel中的表实现基本的导出(写)功能,把一个对象集合输出到一个excel表中。 【基本功能】 将对象集合导出到Excel表 【扩展功能】 1、自由设置表头 2...

    JavaRpc:JAVA RPC实现,基于动态代理与反射

    RPC java实例 文章包括以下两个部分: RPC基本原理 RPC Java实例讲解 废话不多说,现在讲讲RPC到底是什么 RPC基本原理 RPC全程Remote Procedure Call Protocol,即远程过程调用协议,它是一种通过网络从远程计算机...

    JAVA_API1.6文档(中文)

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

    基本设计模式的Java实现

    基本设计模式的实现,实现了工厂模式,抽象工厂模式,建造者模式,命令模式,责任链模式,适配器模式,观察者模式,代理模式,状态模式,原型模式(深克隆/浅克隆)

    JAVA上百实例源码以及开源项目源代码

     Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText(); //得到服务器地址  ...

    JAVA上百实例源码以及开源项目

    百度云盘分享 ... Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。  部分源代码摘录:  ftpClient = new FtpClient(); //实例化FtpClient对象  String serverAddr=jtfServer.getText();...

    Java 1.6 API 中文 New

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了...

    Java思维导图xmind文件+导出图片

    基于Zookeeper实现分布式服务器动态上下线感知 深入分析Zookeeper Zab协议及选举机制源码解读 Dubbo 使用Dubbo对单一应用服务化改造 Dubbo管理中心及及监控平台安装部署 Dubbo分布式服务模块划分(领域驱动) ...

    你必须会的 JDK 动态代理和 CGLIB 动态代理

    我们在阅读一些 Java 框架的源码时,基本上常会看到使用动态代理机制,它可以无感的对既有代码进行方法的增强,使得代码拥有更好的拓展性。 通过从静态代理、JDK 动态代理、CGLIB 动态代理来进行本文的分析。 静态...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 访问者模式 数据结构 Stack - 使用泛型...

    Java核心技术 第12版 开发基础+高级特性 英文原版

    本书不仅让你深入了解设计和实现 Java 应用涉及的所有基础知识和 Java 特性,还会帮助你掌握开发 Java 程序所需的全部基本技能。相信在学习Java的道路上有了本书的辅助,你的学习一定可以做到事半功倍。 作者简介 ·...

    Java 基础核心总结 +经典算法大全.rar

    静态代理与动态代理常见的动态代理实现JDK Proxy CGLIB JDK Proxy 和 CGLIB 的对比动态代理的实际应用 Spring AOP 变量 变量汇总实例变量 实例变量的特点全局变量 静态变量 静态变量的特点类变量 局部变量

    java8看不到源码-HTTP-Proxy:HTTP/HTTPS(TunnelingoverHTTP)使用Java实现的转发代理

    转发代理实现,它是健壮的和 CPU 内存高效的。 快速开始 此 repo 带有存储在bin/lib/nio-http-roxy.jar因此您可以简单地运行代理 JAVA_HOME= ${path_to_java8} \ ./bin/run-nio-http-proxy.sh 您还可以重建并运行 ...

    java api最新7.0

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了...

    JavaAPI1.6中文chm文档 part1

    java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供...

Global site tag (gtag.js) - Google Analytics