大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java回調(diào)函數(shù)的實(shí)現(xiàn)

Java回調(diào)函數(shù)的實(shí)現(xiàn)

更新時(shí)間:2022-07-21 10:52:02 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2365次

與C和C++ 語言不同,Java沒有回調(diào)函數(shù)的概念。Java 不使用指針的概念,因此不支持回調(diào)函數(shù)。但是,我們可以通過傳遞引用函數(shù)位置的接口而不是傳遞函數(shù)的內(nèi)存地址來創(chuàng)建回調(diào)函數(shù)。

Java中使用接口的回調(diào)函數(shù)的語法如下:

公共接口 接口A {   
公共 字符串 callA() ;  
}  

Java 回調(diào)函數(shù)是如何工作的?

Java 中的回調(diào)函數(shù)的工作方式如下:

創(chuàng)建一個(gè)具有單個(gè)方法 A() 的接口 X。

使用 A 作為方法參數(shù)創(chuàng)建方法 method1()。

在 method1() 中調(diào)用 A() 方法。

為了調(diào)用 method1(),我們傳遞 X 的實(shí)例并覆蓋 A()。

使用箭頭符號(hào)作為關(guān)鍵字新聞的替代方法,以便代碼清晰。

讓我們舉個(gè)例子,理解一個(gè)我們可以在Java中使用回調(diào)函數(shù)的場(chǎng)景,

例子:

我們實(shí)現(xiàn)了計(jì)算州稅(總稅)的稅收計(jì)算器。對(duì)于一個(gè)州,稅收可以不止一種,但對(duì)于我們的示例,假設(shè)我們只有兩種稅,即州稅和中央稅。在這兩種稅中,所有州的中央稅都相同,但各州的州稅可能不同。

static void  calculateTax(stateTax() 函數(shù)的地址)   
{  
    中央稅=  2500.0  
    state_tax = 根據(jù) 接口 方法  的地址獲取
    total_tax = central_tax + state_tax;  
}  

在上面的代碼中,stateTax() 方法的地址或引用被傳遞用于計(jì)算calculateTax() 方法中的稅款總和。狀態(tài)代碼因狀態(tài)而異,因此我們將 stateTax() 方法聲明為接口中的抽象方法。

接口 狀態(tài)稅  
{  
     雙 州稅();  
}  

下面是哈里亞納邦和北方邦的 stateTax() 方法的實(shí)現(xiàn):

 哈里亞納邦 類實(shí)現(xiàn) StateTax{  
    公共雙 州稅(){   
        返回1500.0 ;   
     }  
}   
 UP 類實(shí)現(xiàn) StateTax{  
    公共雙 州稅(){   
        返回2500.0 ;   
     }  
}  

CallbackExample1.java

//導(dǎo)入需要的類和包  
導(dǎo)入 java.util.Scanner;   
//創(chuàng)建具有抽象方法stateTax()的接口StateTax  
界面 州稅{  
    //聲明抽象方法  
    雙 州稅();  
}    
// 實(shí)現(xiàn)哈里亞納邦的 StateTax 接口   
 哈里亞納邦 類實(shí)施 StateTax {  
    公共雙重 狀態(tài)稅()   
    {  
        返回1500.0 ;   
    }  
}   
// 為 Utter Pradesh 實(shí)現(xiàn) StateTax 接口  
 UP 類實(shí)施 StateTax {  
    公共雙重 狀態(tài)稅()   
    {  
        返回2500.0 ;   
    }  
}   
// 創(chuàng)建 CallbackExample1 來計(jì)算總稅額  
類 回調(diào)示例 1 {        
    //main() 方法開始  
    public static void  main(String[] args)  throws  ClassNotFoundException, IllegalAccessException, InstantiationException     //處理異常    
    {  
        //創(chuàng)建一個(gè) Scanner 類的實(shí)例來接受用戶輸入  
        掃描儀 sc =  new  Scanner(System.in);  
        System.out.println( "輸入狀態(tài)名" );            
        //從用戶那里獲取狀態(tài)名稱  
        字符串狀態(tài) = sc.next();     
        // 將狀態(tài)名稱存儲(chǔ)在對(duì)象 obj 中  
        類 obj = Class.forName(state);     
        // 創(chuàng)建由 StateTax 引用的 obj 類的新對(duì)象  
        StateTax 參考 = (StateTax)obj.newInstance();     
        //通過傳遞StateTax的引用調(diào)用calculateTax()方法計(jì)算總稅  
        計(jì)算稅(參考);  
    }        
    static void  calculateTax(StateTax 數(shù)據(jù))   
    {  
        //所有州的中央稅都相同  
        雙 中央稅=  3500.0 ;     
        // 獲取用戶輸入狀態(tài)的 state_Tax 并找到總稅  
        雙 state_Tax = data.stateTax();  
        雙 總稅 = state_Tax + central_Tax;     
        // 顯示結(jié)果   
        System.out.println( "該州的總稅額為="  +total_Tax);  
    }  
}  

輸出:

CallbackExample2.java

//為回調(diào)方法創(chuàng)建一個(gè)處理點(diǎn)擊事件的接口  
接口 點(diǎn)擊處理程序 {  
    //創(chuàng)建抽象方法,即clickEventHandler(),它將作為回調(diào)   
    公共無效 點(diǎn)擊事件處理程序();   
}    
//創(chuàng)建一個(gè)處理回調(diào)并實(shí)現(xiàn)ClickHandler的類  
類 處理 程序?qū)崿F(xiàn) ClickHandler {  
    //定義clickEventHandler()方法  
    公共無效 clickEventHandler(){   
        System.out.println( "按鈕正在點(diǎn)擊" );  
    }  
}  
//創(chuàng)建一個(gè)生成事件的類  
類 按鈕類 {  
    公共無效 onClickEvent(ClickHandler obj)   
    {  
        obj.clickEventHandler();  
    }  
}  
//創(chuàng)建CallbackExample2類   
公共類 CallbackExample2 {   
    //main() 方法開始  
    公共靜態(tài)無效 主要(字符串[]參數(shù)){    
        //創(chuàng)建一個(gè)ButtonClass對(duì)象  
        ButtonClass button =  new  ButtonClass();            
        //創(chuàng)建Handler類的對(duì)象  
        處理程序 hndlrObj = 新的 處理程序();            
        //傳遞ClickHandler的對(duì)象來執(zhí)行默認(rèn)操作  
        button.onClickEvent(hndlrObj);    
        //創(chuàng)建另一個(gè)ButtonClass對(duì)象  
        ButtonClass newButton =  new  ButtonClass();            
        //傳遞接口實(shí)現(xiàn)自己的操作  
        newButton.onClickEvent(新 ClickHandler(){    
            @覆蓋  
            //覆蓋在點(diǎn)擊時(shí)顯示輸出的clickEventHandler()  
            公共無效 clickEventHandler(){   
                System.out.println( "按鈕被點(diǎn)擊" );  
            }     
        });  
    }   
}  

輸出:

CallbackExample3.java

//為callback()方法創(chuàng)建類CallbackExample3  
公共類 CallBackExample3 {   
    //主方法開始  
    公共靜態(tài)無效 主要(字符串參數(shù)[]){    
        //將接口名稱作為參數(shù)傳遞的函數(shù)           
        //創(chuàng)建一個(gè)方法并將接口作為參數(shù)傳遞  
        回調(diào)方法(新 接口X()  
        {  
            //創(chuàng)建callMethodX()   
            公共 字符串 callMethodX()  
            {  
                return "這是第一個(gè)回調(diào)" ;    
            }  
        });            
        // 創(chuàng)建一個(gè)方法并將接口作為參數(shù)傳遞  
        回調(diào)方法(新 接口X()  
        {  
            //創(chuàng)建callMethodX()   
            公共  字符串 callMethodX() {  
                return "這是第二次回調(diào)" ;    
            }  
        });            
        回調(diào)方法(()->  
        {  
            return "It is the third callback";  
        });  
    }        
    //define callbackMethod()  
    public static void callbackMethod(interfaceX obj)  
    {     
        //print callback messages  
        System.out.println(obj.callMethodX());  
    }  
    //create an interface  
    public interface interfaceX {  
        public String callMethodX();  
    }  
}  

輸出:

以上就是關(guān)于“Java回調(diào)函數(shù)的實(shí)現(xiàn)”介紹,大家如果想了解更多相關(guān)知識(shí),不妨來關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 毛片你懂的 | 亚洲精品久久久久午夜 | 色综合久久98天天综合 | 精品国产一区二区三区四区色 | 欧美精品videossex最新 | 国产国产精品四虎视频精品 | 国产成人亚综合91精品首页 | 免费国产午夜在线观看 | 色综合视频一区二区三区 | 色爱区综合激情五月综合色 | a级高清观看视频在线看 | 天天综合亚洲 | 夜夜久久| 日本b站一卡二不卡 | 日韩精品特黄毛片免费看 | 99久久久精品免费观看国产 | 午夜精品九九九九99蜜桃 | 日日夜夜伊人 | 成人性一级视频在线观看 | 亚洲精品6久久久久中文字幕 | 爱婷婷网站在线观看 | 亚洲国产欧洲综合997久久 | 搜一级毛片 | 亚洲精品一区二区三区www | 日本不卡免费在线 | 亚洲精品中文一区不卡 | 草久影院 | 天天艹夜夜 | 久久91精品久久久久久水蜜桃 | 高清不卡免费一区二区三区 | 天天撸天天操 | 亚洲欧美一区二区三区麻豆 | 午夜精品福利影院 | 在线观看亚洲视频 | 欧美日韩在线播放一区二区三区 | 337p色噜噜 | 狠狠色噜噜狠狠狠狠奇米777 | 九九热在线观看视频 | 蕾丝视频永久在线入口香蕉 | 天天搞天天操 | 国产未成女年一区二区 |