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

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

Java回調函數的實現

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

與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在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美综合自拍亚洲综合 | 黄色网在线 | 精品国产成人a区在线观看 精品国产v无码大片在线观看 | 男女无遮挡在线完整视频 | 亚洲男人天堂网站 | 亚洲欧美v视色一区二区 | 黑人黄色一级片 | 欧美小视频在线观看 | 日本不卡免费高清一级视频 | 亚洲欧洲日本在线 | 直接观看黄网站免费视频 | 欧美日韩在线观看免费 | 人人色网 | 九九成人免费视频 | 2020国产精品视频免费 | wwwxx欧美| 亚洲天堂在线观看视频 | 高h辣肉各种姿势爽文bl | 日本xxxxx高清 | 日韩在线视频观看 | 亚洲欧美另类国产综合 | 日日摸夜夜添夜夜添97 | 午夜h视频| 欧美国产精品不卡在线观看 | 日本韩经典三级在线播放 | 欧美日韩一区视频 | 久久综合九色综合77 | 看全色黄大色大片免费久久 | 日韩一区二区三区在线观看 | 99视频九九精品视频在线观看 | 中文字幕免费视频精品一 | 一区二区视频在线观看 | 久一视频在线 | 色天天综合 | 久久这里精品青草免费 | 亚洲91av| 色综合久久精品中文字幕 | 97国产成人精品视频 | 禁网站在线观看免费视频 | 国产满18av精品免费观看视频 | 黄色网址视频 |