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

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

Java回調接口的例子

更新時間:2022-11-21 10:17:42 來源:動力節點 瀏覽1806次

Java中的回調:但是Java中不存在回調函數的概念,因為Java沒有指針概念。但是,在某些情況下,我們可以談論回調對象或回調接口。不是傳遞函數的內存地址,而是傳遞引用函數位置的接口。

例子

讓我們舉個例子來理解在哪里可以使用回調。假設一個程序員想要設計一個稅收計算器來計算一個州的總稅收。假設只有兩種稅,中央稅和州稅。中央稅很普遍,而州稅因州而異。總稅額為兩者之和。這里為每個州實現了像 stateTax() 這樣的單獨方法,并從另一個方法 calculateTax() 調用此方法,如下所示:

static void calculateTax(stateTax() 函數的地址)
{
    ct = 1000.0
    st = 根據地址計算州稅
    總稅額 = ct+st;
}

在前面的代碼中,stateTax() 的地址被傳遞給 calculateTax()。calculateTax() 方法將使用該地址調用特定州的 stateTax() 方法,并計算州稅“st”。

由于 stateTax() 方法的代碼從一種狀態變為另一種狀態,因此最好將其聲明為接口中的抽象方法,如:

接口標準稅
{
     雙州稅();
}

以下是旁遮普邦的 stateTax() 的實現:

類旁遮普實現 STax{
    公共雙州稅(){
    返回 3000.0;
     }
}

以下是 HP 狀態的 stateTax() 的實現:

類 HP 實現 STax
{
    公共雙重 stateTax()
    {
        返回 1000.0;
    }
}

現在,calculateTax() 方法可以設計為:

static void calculateTax(STax t)
{
    // 計算中央稅
    雙 ct = 2000.0;
    // 計算州稅
    雙 st = t.stateTax();
    雙總稅 = st + ct;
    // 顯示總稅額
    System.out.println(“總稅額=”+totaltax);
}

在這里,觀察 calculateTax() 方法中的參數“STax t”。't' 是作為參數傳遞給方法的 'STax' 接口的引用。使用此引用,調用 stateTax() 方法,如下所示:

雙 st = t.stateTax();

此處,如果“t”引用 Punjab 類的 stateTax() 方法,則調用該方法并計算其稅金。同樣,對于類 HP。這樣,通過將接口引用傳遞給 calculateTax() 方法,就可以調用任何州的 stateTax() 方法。這稱為回調機制。

通過傳遞引用方法的接口引用,可以從另一個方法調用和使用該方法。

// Java program to demonstrate callback mechanism
// using interface is Java
// Create interface
import java.util.Scanner;
interface STax {
	double stateTax();
}
// Implementation class of Punjab state tax
class Punjab implements STax {
	public double stateTax()
	{
		return 3000.0;
	}
}
// Implementation class of Himachal Pradesh state tax
class HP implements STax {
	public double stateTax()
	{
		return 1000.0;
	}
}
class TAX {
	public static void main(String[] args)
throws ClassNotFoundException, IllegalAccessException, InstantiationException
	{
		Scanner sc = new Scanner(System.in);
		System.out.println("Enter the state name");
		String state = sc.next(); // name of the state
		// The state name is then stored in an object c
		Class c = Class.forName(state);
		// Create the new object of the class whose name is in c
		// Stax interface reference is now referencing that new object
		STax ref = (STax)c.newInstance();
		/*Call the method to calculate total tax
		and pass interface reference - this is callback .
		Here, ref may refer to stateTax() of Punjab or HP classes
		depending on the class for which the object is created
		in the previous step
		*/
		calculateTax(ref);
	}
	static void calculateTax(STax t)
	{
		// calculate central tax
		double ct = 2000.0;
		// calculate state tax
		double st = t.stateTax();
		double totaltax = st + ct;
		// display total tax
		System.out.println("Total tax =" + totaltax);
	}
}

輸出:

輸入州名
旁遮普語
總稅額 = 5000.0

 

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩欧美天堂 | xxx大片| 午夜免费影院 | 在线天堂中文在线资源网 | 中文字幕第9页 | 华人欧美国产在线精品 | 在线不卡日韩 | 在线a人片免费观看国产 | 天天躁日日躁狠狠躁综合 | 黄色一级免费看 | 欧美性f| 亚洲欧美日韩中文v在线 | 人人做人人澡人人人爽 | www.欧美在线观看 | 亚洲欧美中文日韩在线v日本 | 在线观看91精品国产hd | 一区二区三区国产 | 天天操免费视频 | 美女黄色好大美女黄色 | 性感美女香蕉视频 | 日批视频在线 | 在线看欧美日韩中文字幕 | 国产草逼视频 | 免费久久久久 | 天天操免费视频 | 99精品视频在线在线视频观看 | 欧美在线成人午夜网站 | 在线观看一区二区三区视频 | 成人高清在线视频 | 日韩国产午夜一区二区三区 | 亚洲欧洲色天使日韩精品 | 特级黄a三级三级三级 | 草草国产成人免费视频 | 欧美在线观看不卡 | 亚洲欧美日韩综合二区三区 | 男女午夜爽爽大片免费 | 国产aa大片| 日日噜噜夜夜狠狠视频buoke | xxx中国毛茸茸 | 一个人的www免费视频 | 日本亚洲精品 |