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

首頁(yè) > 開發(fā) > Java > 正文

Java開發(fā)之內(nèi)部類對(duì)象的創(chuàng)建及hook機(jī)制分析

2024-07-13 10:16:56
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Java內(nèi)部類對(duì)象的創(chuàng)建及hook機(jī)制。分享給大家供大家參考,具體如下:

Java中的內(nèi)部類雖然在狀態(tài)信息上與其外圍類在狀態(tài)信息是完全獨(dú)立的(可直接通過(guò)內(nèi)部類實(shí)例執(zhí)行其功能),但是外圍類對(duì)象卻是內(nèi)部類對(duì)象得以存在的基礎(chǔ)。

內(nèi)部類對(duì)象生成的時(shí)候,必須要保證其能夠有外圍類對(duì)象進(jìn)行掛靠(hook),從而java提供了嚴(yán)格的內(nèi)部類對(duì)象生成的語(yǔ)法。

一般慣用兩種方法,生成內(nèi)部類對(duì)象。

Method1: 使用  外圍類實(shí)例.new  內(nèi)部類名稱() 的標(biāo)準(zhǔn)方法。

Example 1:

public class Outer{   int no;  class Inner implents InterfaceA{}}interface InterfaceA{}main(){Outer instanceA= new Outer();InterfaceA interfaceA=instanceA.new Inner() ;//注意內(nèi)部類實(shí)例產(chǎn)生的方法,new 外圍類實(shí)例.內(nèi)部類名() ,這樣做的目的是為了保證內(nèi)部類實(shí)例一定有外圍類實(shí)例hook.InterfaceA interfaceB=instanceA.new Outer();//又生成了一個(gè)內(nèi)部類的實(shí)例,且也掛靠在了實(shí)例instanceA上。}

Method2: 使用工廠方法,直接返回實(shí)現(xiàn)了某一接口的對(duì)象(該對(duì)象一般為內(nèi)部類)。

Example 1:

public class Outer{   int no;  class Inner implents InterfaceA{}  public InterfaceA createInnerInstance{    return InterfaceA{        read();    }   }}interface InterfaceA{public void read();}main(){Outer instanceA= new Outer();InterfaceA interfaceA=instanceA.createInnerInstance() ;//注意內(nèi)部類實(shí)例產(chǎn)生的方法,直接調(diào)用了一個(gè)工廠方法,返回一個(gè)實(shí)現(xiàn)InterfaceA接口的對(duì)象。InterfaceA interfaceB=instanceA.createInnerInstance();//又生成了一個(gè)內(nèi)部類的實(shí)例,且也掛靠在了實(shí)例instanceA上。}

與使用實(shí)例名.new 類名()的方式相比,工廠方法顯得更為優(yōu)雅和清晰。

!注意內(nèi)部類的使用場(chǎng)景,一般是返回一個(gè)實(shí)現(xiàn)了某接口功能的內(nèi)部類對(duì)象到外部,然后進(jìn)行相應(yīng)的操作。(由于外圍類的成員對(duì)內(nèi)部類全可見,其方便性和優(yōu)勢(shì)十分的明顯)

由于內(nèi)部類對(duì)象在生成的時(shí)候,編譯器就自動(dòng)的對(duì)創(chuàng)建其的外圍類實(shí)例信息進(jìn)行了捕獲,所以java還提供了.this方式回調(diào)外圍類實(shí)例(此方法有時(shí)候十分的重要)。

Example:

public class Outer{  class inner  {    public Outer callback(){return Outer.this}//callback()方法返回了內(nèi)部類對(duì)象hook的外圍類對(duì)象的引用,使用語(yǔ)法 外圍類名.this, 注意函數(shù)的返回類型!  }}

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 荃湾区| 南阳市| 嘉荫县| 营口市| 青海省| 金华市| 理塘县| 什邡市| 安福县| 辉县市| 鹿泉市| 长垣县| 稷山县| 辽源市| 惠来县| 济宁市| 利津县| 烟台市| 张家港市| 雷州市| 邓州市| 双桥区| 渝北区| 崇阳县| 鄂伦春自治旗| 盘山县| 崇礼县| 锡林浩特市| 张家口市| 镇宁| 灵台县| 容城县| 甘孜县| 海安县| 兰西县| 江达县| 台江县| 横山县| 海阳市| 达日县| 保靖县|