国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Java程序開(kāi)發(fā)中代理技術(shù)的使用方法

2019-11-17 05:57:18
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  假如你這樣的需求:在運(yùn)行時(shí)創(chuàng)建實(shí)現(xiàn)一組給定接口的類(lèi),注重這個(gè)類(lèi)是在運(yùn)行時(shí)創(chuàng)建的,你就需要使用java中的代理類(lèi)來(lái)達(dá)成你的要求。

  代理類(lèi)提供在運(yùn)行時(shí)創(chuàng)建類(lèi)的能力,這個(gè)新建的類(lèi)能實(shí)現(xiàn)你指定的接口。 當(dāng)然你不能在運(yùn)行時(shí)為要實(shí)現(xiàn)的接口中的方法定義新代碼,而是提供一個(gè)調(diào)用處理器來(lái)實(shí)現(xiàn)。調(diào)用處理器是實(shí)現(xiàn)了InvocationHandler接口的類(lèi)的對(duì)象,此接口只有一個(gè)方法:

以下是引用片段:
Object invoke(Object PRoxy,Method mtd,Object[] args)

  其中proxy是代理對(duì)象;mtd是描述方法的類(lèi)的對(duì)象,此對(duì)象執(zhí)行它的invoke(Object obj,Object[] args)方法可以調(diào)用封裝在Mthod對(duì)象中的方法;args是存儲(chǔ)了此方法參數(shù)的數(shù)組。

  建立代理對(duì)象:使用Proxy類(lèi)的newProxyInstance方法,其格式如下:

以下是引用片段:

Object proxy=Proxy.newProxyInstance(null,interfaces,handler);

  其中第一個(gè)參數(shù)是一個(gè)類(lèi)加載器,這里使用默認(rèn)加載器,用null表示;第二個(gè)參數(shù)是一個(gè)Class的數(shù)組,其每個(gè)元素是一個(gè)接口,這就是用來(lái)指定要實(shí)現(xiàn)的一組接口,哪怕只有一個(gè)接口也要通過(guò)數(shù)組來(lái)傳遞;第三個(gè)參數(shù)就是調(diào)用處理器。

  在代理對(duì)象上調(diào)用方法時(shí),調(diào)用處理器的invoke方法會(huì)被自動(dòng)調(diào)用,正在調(diào)用的方法和參數(shù)自動(dòng)傳遞給inboke方法的jmtdt args形式參數(shù)中,同時(shí)也會(huì)用args參數(shù)數(shù)組中的參數(shù)去調(diào)用mtd對(duì)象中指定的方法。

  代理的應(yīng)用:方法調(diào)用跟蹤(把要跟蹤的對(duì)象包裝成代理類(lèi)對(duì)象);為遠(yuǎn)程調(diào)用方法提供路由;用戶(hù)接口事件與動(dòng)作關(guān)聯(lián)(C#中有類(lèi)似的功能)。



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 河北省| 景宁| 郯城县| 灌云县| 兴国县| 南和县| 闵行区| 育儿| 阿尔山市| 麻城市| 胶南市| 德庆县| 玉门市| 横峰县| 武胜县| 九龙城区| 阜阳市| 白玉县| 镇坪县| 竹北市| 柞水县| 沙坪坝区| 福贡县| 安宁市| 赣榆县| 西吉县| 宣汉县| 凤城市| 丰原市| 哈尔滨市| 定西市| 安平县| 大邑县| 南投市| 玉门市| 兰州市| 万宁市| 定西市| 郴州市| 阜南县| 石泉县|