`
djob2008
  • 浏览: 127439 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

编写Java动态代理的步骤

阅读更多

编写Java动态代理的步骤如下:

 

1.创建一个实现接口InvocationHandler的类,它必须实现invoke方法

 

2.创建被代理的类以及接口

 

3.通过Proxy的静态方法 

newProxyInstance(ClassLoader loader, Class[] interfaces, InvocationHandler h)

 

 

 

4.通过代理调用方法

package test;

public interface PeopleInfac {
	public void showInfo();

}

 

package test;

public class People implements PeopleInfac {

	public void showInfo() {

		System.out.println("people showInfo()");
	}

}

 

package test;

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

public class DanimacProxy implements InvocationHandler {

	Object o;

	public DanimacProxy(Object o) {
		this.o = o;
	}

	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		method.invoke(o, null);
		return null;
	}
}

 

package test;

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

public class Test {

	public static void main(String[] args) {

		People p = new People();

		InvocationHandler proxy = new DanimacProxy(p);

		Class<?> cls = p.getClass();

		PeopleInfac pi = (PeopleInfac) Proxy.newProxyInstance(cls
				.getClassLoader(), cls.getInterfaces(), proxy);

		pi.showInfo();
	}
}

 

 

分享到:
评论

相关推荐

    JNI--java调用不同平台的动态链接库,dll,so,完美,全教程

    我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦...使用 JNA ,不需要再编写适配用的 .dll/.so ,只需要在 Java 中编写一个接口和一些代码,作为 .dll/.so 的代理,就可以在 Java 程序中调用 dll/so 。

    Java连接数据库步骤解析(Oracle、MySQL)

    本文主要介绍了Java连接Oracle数据库和MySQL数据库的步骤解析。具有很好的参考价值,需要的朋友一起来看下吧

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

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

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

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java jdk实列宝典 光盘源代码

    15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...

    java应用软件程序设计

    242 实例74 实现一个简单的代理服务器 246 实例75 C/S结构的分布式运算 248 第7章 Java B/S结构编程 253 实例76 简单的Servlet程序 254 实例77 简单的留言簿 256 实例78 JSP+Java Bean的计数器 ...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    15.1.6 动态代理 512 15.2 了解类加载器 515 15.2.1 类加载器层级架构 515 15.2.2 建立classloader实例 518 15.3 重点复习 520 15.4 课后练习 521 chapter16 自定义泛型、枚举与标注 523 16.1 自定义...

    强力 Java 爬虫,列表分页、详细页分页、ajax、微内核高扩展、配置灵活.rar

    完成一个 Java 爬虫需要以下几个步骤: 1、确定爬取的目标网站和数据结构:首先需要确定要爬取的网站和需要获取的数据结构,这样才能确定需要爬取的页面和数据。 2、分析目标网站的页面结构:需要分析目标网站的...

    疯狂JAVA讲义

    学生提问:为什么即使我没有给多行文本域编写右键菜单,但当我在多行文本域上单击右键时一样会弹出右键菜单? 418 11.7 在AWT中绘图 418 11.7.1 画图的实现原理 418 11.7.2 使用Graphics类 419 11.8 处理位图 ...

    java 面试题 总结

    EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不依赖...

    Java_JDBC由浅入深

    14.3.2 动态代理 84 14.4 DBCP数据库连接池的使用 87 第十五节 jdbc轻量级封装 88 15.1 将结果集封装为Map 88 15.1.1 ResultSetMetaData演示 88 15.1.2解决多行记录的问题 89 15.1.3 Map结果集的封装 90 15.2 将结果...

    java8源码-back-end-java-server:spring启动后端服务器

    使用node做权限验证和反向代理,java服务器只在服务器本地启动,不考虑权限问题 调试 前置条件 java环境(java8, 不要用java9+版本) 使用ide时需要添加lombok插件 maven环境 mysql环境,推荐mariadb (二选一)自行搭建...

    java 设计模式资料

    所有代码用JDeveloper 9i 和JBuilder 6.0编写,并编译、运行通过。 3. 示例中的类,方法的命名规则和各个对象间的协作,基本同原书, 所以可以在看书的同时加以参照。 4. 为图方便,绝大多数示例的效果是用printf...

    超级有影响力霸气的Java面试题大全文档

    EJB容器是EJB组件的代理, EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 24、Static Nested Class 和 Inner Class的不同。 Static Nested Class是被声明为静态(static)的内部类,它可以不...

    [vip专享]java设计模式实验报告.pdf

    PowerDesigner 和任意一种面向对象编程语言实现装饰模式、外观模式、代理模 式、职责链模式、命令模式、迭代器模式、观察者模式、状态模式、策略模式和模板方法 模式,包括根据实例绘制相应的模式结构图、编写模式...

    java笔试题算法-Pathworks:寻路框架和测试工具

    当算法运行时,代理应该实时移动,而不是步骤。 我不认为应该需要墙壁和代理之间的实际碰撞解决方案,因为代理不应该试图在占用的空间上行走。 然而,需要进行代理和代理之间的冲突才能显示算法何时表现不佳。 不过...

    Multiple-Conversions

    总共有五台转换服务器和一台代理服务器,其中两台转换服务器用python编写,其他都用Java编写。 正向转换分为以下步骤: 克(g)=&gt;千克(kg)(1000:1) 公斤(kg)=&gt;磅(lbs)(1:2.2) 磅(lbs)=&gt;盎司(oz)...

    weblogic集群部署文档.docx

    2.进入bin目录编写bat执行脚本 ,新建startNodes_1.bat 和startProxy_server.bat 文件 startNodes_1.bat 内容: startManagedWebLogic.cmd nodes_1 startProxy_server.bat 内容: startManagedWebLogic.cmd proxy_...

    跨平台移动端开发NativeScript.zip

    NativeScript可以将其所支持平台上的任意原生API作为目标,包括传感器接口API和用Objective C,Java或.NET编写的第三方库。UI组件是原生的,UI事件由在JavaScript代码中声明的原生处理程序处理,如View....

Global site tag (gtag.js) - Google Analytics