大战熟女丰满人妻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ù)文檔推薦 >>
主站蜘蛛池模板: 黄片毛片大全 | 激情五月色婷婷在线观看 | 久久国产精品岛国搬运工 | 欧美成人xx免费视频 | 久久精品国产精品亚洲毛片 | 狠狠干狠| 婷婷的久久五月综合先锋影音 | 日日天干夜夜人人添 | 久久青草国产精品一区 | 中文字幕或区 | 国产午夜精品一区二区 | 伊人伊人网 | 中文字幕在线观看一区二区三区 | 国产一级特黄aa毛片 | 黄视频网站观看 | 一区两区三不卡 | 国产精品久久一区二区三区 | 综合久久影院 | 亚洲另类图片专区 | 国产美女午夜精品福利视频 | 伊人色院成人蜜桃视频 | 国产成人国产在线观看入口 | 美日韩黄色大片 | 最新欧美一级视频 | 亚洲天堂三区 | 人人干人人干 | 久草在线观看免费 | 精品视频在线免费播放 | 国产日韩欧美中文字幕 | 亚洲sss视频| 久久99精品久久久久久久野外 | 亚洲精品99久久久久中文字幕 | 久久精品国产99久久6动漫欧 | 美欧毛片| 一级aa免费视频毛片 | 亚洲精品一区二区三区不卡 | 亚欧美| 国产精品视频分类一区 | 久久这里只有精品免费播放 | 中文字幕一区视频 | 九九免费观看全部免费视频 |