深入解析MapReduce架构设计与实现原理–读书笔记(7)hadoopRPC反

php中文网
发布: 2016-06-07 16:32:52
原创
995人浏览过

hadoop RPC 中用到的JDK开发工具包中的一些类。 主要包括java.lang. reflect 反射机制和动态代理相关类。java.net网络编程库,java.nio(NIO) 1.java反射机制和动态代理 反射机制是java语言的一个重要特性,它允许用户动态获取类的信息和动态调用对象的方法

hadoop RPC中用到的JDK开发工具包中的一些类。
主要包括java.lang.reflect反射机制和动态代理相关类。java.net网络编程库,java.nio(NIO)
1.java反射机制和动态代理
反射机制是java语言的一个重要特性,它允许用户动态获取类的信息和动态调用对象的方法。
Class类 代表一个java类
Field类 代表Java类的属性
Method类 代表Java类的方法
Constructor类 代表java类的构造函数
Array类 提供了动态创建数组,以及访问数组元素的静态方法
Proxy类和InvocationHandler接口 提供了动态生成代理类以及实例的方法。

代理是一种常用的设计模式,其目的是为其他对象提供一种代理以控制对这个对象的访问。代理类负责为委托类进行预处理,或者执行完后的后续处理。

MacsMind
MacsMind

电商AI超级智能客服

MacsMind 192
查看详情 MacsMind

java.lang.reflect.Proxy

这是java动态代理机制的主类,它提供了一组静态方法,用于为一组接口动态地生成代理类及对象。

<p class="devcodeoverflow"><ol><li>static InvocationHandler getInvocationHandler&#40;Object proxy&#41;  //获取指定代理对象所关联的调用处理器</li><li>static Class getProxyClass&#40;ClassLoader loader,Class&#91;&#93; interfaces&#41; //获取关联于指定的类装载器和一组接口的动态代理类的对象</li><li>static boolean isProxyClass&#40;Class cl&#41;  //判断指定的类对象是否一个动态代理类</li><li>static Object newProxyInstance&#40;ClassLoader loader,Class&#91;&#93; interfaces,InvocationHandler h&#41; //为指定类装载器,一组接口及调用处理器生成动态代理类实例</li></ol></p>
登录后复制

java.lang.reflect.InvocationHandler

这是调用处理器接口。它定义了一个invoke方法,用于处理在动态代理类对象上的方法调用。开发人员需要实现该接口,并在invoke方法中实现对委托类的代理访问。

<p class="devcodeoverflow"><ol><li>//下方法负责处理动态代理类上的所有方法调用。三个参数:代理类实例,被调用的方法,调用参数。</li><li>Object invoke&#40;Object proxy,Method method,Objects&#91;&#93; args&#41;</li><li>示例如下:</li><li>package com.sw.testproxy;</li><li>import java.lang.reflect.InvocationHandler;</li><li>import java.lang.reflect.Proxy;</li><li>import java.lang.reflect.Method;</li><li>interface CalculatorProtocol &#123;</li><li>	public int add &#40;int a,int b&#41;;</li><li>	public int subtract&#40;int a,int b&#41;;</li><li>&#125;</li><li>class Server implements CalculatorProtocol&#123;</li><li>	@Override</li><li>	public int add&#40;int a, int b&#41; &#123;</li><li>		return a+b;</li><li>	&#125;</li><li>	@Override</li><li>	public int subtract&#40;int a, int b&#41; &#123;</li><li>		return a-b;</li><li>	&#125;</li><li>&#125;</li><li>class CalculatorHandler implements InvocationHandler&#123;	</li><li>	private Object objOriginal ;</li><li>	public CalculatorHandler&#40;Object obj&#41;&#123;</li><li>		this.objOriginal = obj ;</li><li>	&#125;	</li><li>	@Override</li><li>	public Object invoke&#40;Object proxy, Method method, Object&#91;&#93; args&#41;</li><li>			throws Throwable &#123;</li><li>		Object result = method.invoke&#40;this.objOriginal,args&#41;;</li><li>		return result;</li><li>	&#125;</li><li>&#125;</li><li>public class DynamicProxyExample &#123;</li><li>	public static void main&#40;String&#91;&#93; args&#41; &#123;</li><li>		CalculatorProtocol server  = new Server&#40;&#41;;</li><li>		InvocationHandler handler = new CalculatorHandler&#40;server&#41;;</li><li>		CalculatorProtocol client = &#40;CalculatorProtocol&#41;Proxy.newProxyInstance&#40;server.getClass&#40;&#41;.getClassLoader&#40;&#41;,</li><li>																			 server.getClass&#40;&#41;.getInterfaces&#40;&#41;,handler&#41;;</li><li>		int r = client.add&#40;5,3&#41;;</li><li>		System.out.println&#40;r&#41;;</li><li>	&#125;</li><li>&#125;</li></ol></p>
登录后复制

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号