黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java回調函數的實現

Java回調函數的實現

更新時間:2022-07-21 10:52:02 來源:動力節點 瀏覽2504次

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

Java中使用接口的回調函數的語法如下:

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

Java 回調函數是如何工作的?

Java 中的回調函數的工作方式如下:

創建一個具有單個方法 A() 的接口 X。

使用 A 作為方法參數創建方法 method1()。

在 method1() 中調用 A() 方法。

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

使用箭頭符號作為關鍵字新聞的替代方法,以便代碼清晰。

讓我們舉個例子,理解一個我們可以在Java中使用回調函數的場景,

例子:

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

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

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

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

下面是哈里亞納邦和北方邦的 stateTax() 方法的實現:

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

CallbackExample1.java

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

輸出:

CallbackExample2.java

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

輸出:

CallbackExample3.java

//為callback()方法創建類CallbackExample3  
公共類 CallBackExample3 {   
    //主方法開始  
    公共靜態無效 主要(字符串參數[]){    
        //將接口名稱作為參數傳遞的函數           
        //創建一個方法并將接口作為參數傳遞  
        回調方法(新 接口X()  
        {  
            //創建callMethodX()   
            公共 字符串 callMethodX()  
            {  
                return "這是第一個回調" ;    
            }  
        });            
        // 創建一個方法并將接口作為參數傳遞  
        回調方法(新 接口X()  
        {  
            //創建callMethodX()   
            公共  字符串 callMethodX() {  
                return "這是第二次回調" ;    
            }  
        });            
        回調方法(()->  
        {  
            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();  
    }  
}  

輸出:

以上就是關于“Java回調函數的實現”介紹,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 你懂的手机在线视频 | 日日天天夜夜 | 日本久久精品免视看国产成人 | 成人全黄三级视频在线观看 | www涩涩| 日本欧美在线观看 | 国产精品麻豆高清在线观看 | 欧美激情一区二区三区 | 国产成人精品视频在放 | 日韩黄视频 | 午夜影院91| 欧美一级看片免费观看视频在线 | 色费女人18毛片a级视频在线 | 五月婷在线观看 | 一区福利视频 | 狠狠色综合久久婷婷 | 国产91欧美| 欧美成人18 | 嗯啊视频在线观看 | 亚洲午夜久久 | 热久久视久久精品18国产 | www激情| 男人天堂2020手机在线 | 国产精品亚洲二区 | 日本午夜在线视频 | 日本高清www午色夜黄 | 久久综合九色综合97_ 久久久 | 日韩国产成人精品视频 | 精品一区二区三区在线视频观看 | 在线成人免费观看 | 一个人看的免费视频www | 天天摸日日摸人人看 | 欧美一区二区三区高清视频 | 天天干天天曰 | 99精品视频在线观看免费专区 | 欧美色碰碰碰免费观看长视频 | 色羞羞 | 性色综合 | 中文字幕视频一区 | 成人午夜小视频 | xxx欧洲|