更新时间:2022-08-31 11:24:08 来源:极悦 浏览1217次
我们已经多次听说过回调函数,主要是在 JavaScript 中。
那么让我们用 Java 进行一些函数式编程……
公共类回调{
public static void getSalary(Consumer<Double> callback) {
双倍工资 = 50_000.00;
系统。out .println("领取工资...");
// 回调我们的回调函数
callback.accept(salary);
}
public static void main(String... args) {
// 这里我们传递一个消费者函数
// 作为参数
getSalary ((salary) -> { System.out
.println ("Gross Salary :" + Salary); } ); } }
因此,我们的getSalary()函数将接受消费者double 类型且不返回任何内容的函数,这里我们使用Consumer<T> 函数接口,但 Java 中还有其他FunctionInterface。
现在让我们在流程中添加更多内容……所以当我们获得 Salary 时,首先要做的就是从我们的工资中扣除税款,所以让我们实现它。
public static void deductTax(double GrossSalary, Consumer<Double> callback) {
System. out .println("扣税...");
双重征税 = 5;// 5% 的总工资
双倍 afterTax = GrossSalary * (100 - tax) / 100;
callback.accept(税后);
}
public static void main(String... args) {
// 这里我们传递一个消费者函数
// 作为参数
getSalary ((grossSalary) -> { System.out
.println ("Gross Salary :" + GrossSalary); deductTax (grossSalary, (afterTaxSalary) -> { System.out .println ("税后:" + afterTaxSalary); }); }); }
在这里,我们创建了新函数deductTax()用于从工资总额中扣除税款,它将接受工资总额和另一个回调函数作为参数。它将从总工资中扣除税款并将其传递回我们的回调函数。
让我们再添加一个函数来从我们的税后工资中支付租金。
public static void payRent(double afterTaxSalary, Consumer<Double> callback) {
System. out .println("付房租...");
双倍租金 = 20_000.00;
double afterRent = afterTaxSalary - 租金;
callback.accept(afterRent);
}
public static void main(String... args) {
// 这里我们传递一个消费者函数
// 作为参数
getSalary ((grossSalary) -> { System.out
.println ("Gross Salary :" + GrossSalary); deductTax (grossSalary, (afterTaxSalary) -> { System.out .println ("税后:" + afterTaxSalary); payRent (afterTaxSalary, ( afterRentPayment ) -> { System.out .println ("租金后:" + afterRentPayment); } ); }); }); }
看,很容易将函数作为参数传递并从执行函数中回调它。
为什么要使用回调,回调很容易进行单元测试,因为我们可以将任何函数作为回调传递给函数参数。如果我们想在完成一些异步任务后执行某个进程,那么我们可以传递回调函数,这样在完成一些异步任务后它会回火我们的回调函数。
这是我们回调类的完整源代码。
公共类回调{
public static void getSalary(Consumer<Double> callback) {
双倍工资 = 50_000.00;
系统。out .println("领取工资...");
// 这里可以做一些工作...比如db call, api call
// 回调我们的回调函数
callback.accept(salary);
}
public static void deductTax(double GrossSalary, Consumer<Double> callback) {
System. out .println("扣税...");
双重征税 = 5;// 5% 的总工资
双倍 afterTax = GrossSalary * (100 - tax) / 100;
// 这里可以做一些工作...比如通知税务局
// 回调我们的回调函数
callback.accept(afterTax);
}
public static void payRent(double afterTaxSalary, Consumer<Double> callback) {
System. out .println("付房租...");
双倍租金 = 20_000.00;
double afterRent = afterTaxSalary - 租金;
// 这里可以做一些工作...比如通知地主
// 回调我们的回调函数
callback.accept(afterRent);
}
public static void main(String... args) {
// 这里我们传递一个消费者函数
// 作为参数
getSalary ((grossSalary) -> { System.out
.println ("Gross Salary :" + GrossSalary); deductTax (grossSalary, (afterTaxSalary) -> { System.out .println ("税后:" + afterTaxSalary); payRent (afterTaxSalary, ( afterRentPayment ) -> { System.out .println ("租金后:" + afterRentPayment); } ); }); }); } }
以上就是关于“Java回调函数的例子”介绍,大家如果想了解更多相关知识,不妨来关注一下极悦的Java极悦在线学习,里面的课程内容细致全面,很适合零基础的小白学习,相信对大家一定会有所帮助的。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习