Java-回调/Callback

本文代码部分来自于:https://www.cnblogs.com/heshuchao/p/5376298.html
由于我本人增加了颇多的个人理解,所以转为原创,若有错误,请指正

代码段1.1:
public class Student	
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

private int calcADD(int a, int b)
{
    return a + b;
}

public void fillBlank(int a, int b)
{
    int result = calcADD(a, b);
    System.out.println(name + "心算:" + a + " + " + b + " = " + result);
}
}
代码段1.2:
public class Test
{
public static void main(String[] args)
{
    int a = 1;
    int b = 1;
    Student s = new Student("小明");
    s.fillBlank(a, b);
}
}

代码段2.1:
public class Calculator
{
public int add(int a, int b)
{
    return a + b;
}
}
代码段2.2:
public class Student
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

@SuppressWarnings("unused")
private int calcADD(int a, int b)
{
    return a + b;
}

private int useCalculator(int a, int b)
{
    return new Calculator().add(a, b);
}

public void fillBlank(int a, int b)
{
    int result = useCalculator(a, b);
    System.out.println(name + "使用计算器:" + a + " + " + b + " = " + result);
}
}

代码段2.3:
public class Test
{
public static void main(String[] args)
{
    int a = 168;
    int b = 291;
    Student s = new Student("小明");
    s.fillBlank(a, b);
}
}



代码段3.1:
public class SuperCalculator
{
public void add(int a, int b, Student  xiaoming)
{
    int result = a + b;
    xiaoming.fillBlank(a, b, result);
}
}


代码段3.2:
public class Student
{
private String name = null;

public Student(String name)
{
    // TODO Auto-generated constructor stub
    this.name = name;
}

public void setName(String name)
{
    this.name = name;
}

public void callHelp (int a, int b)
{
    new SuperCalculator().add(a, b, this);
}

public void fillBlank(int a, int b, int result)
{
    System.out.println(name + "求助小红计算:" + a + " + " + b + " = " + result);
}
}



代码段3.3:
public class Test
{
public static void main(String[] args)
{
    int a = 26549;
    int b = 16487;
    Student s = new Student("小明");
    s.callHelp(a, b);
}
}

1、2、3代码执行过程分析:
代码段1:

李寻欢

代码段2:

李寻欢

代码段3:

李寻欢

总结:

李寻欢

重点分析代码段3的回调Callback功能的实现:
李寻欢

我们从简单的加法求和中看到面向过程和面向对象的区别:
李寻欢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Java中,函数(Callback)是一种常见的编程模式。函数用于在某个特定事件发生时,将控制权交给另一个函数或对象,以执行特定的操作。这种模式通常用于异步编程或事件驱动的编程中。 在Java中,可以通过接口、抽象类或Lambda表达式来实现函数。下面是几种常见的实现方式: 1. 使用接口: - 定义一个接口,其中包含一个方法。 - 在需要执行的类中,将需要的对象作为参数传入,并方法。 2. 使用抽象类: - 定义一个抽象类,其中包含一个抽象的方法。 - 在需要执行的类中,继承该抽象类并实现方法。 3. 使用Lambda表达式(Java 8及以上版本): - 定义一个函数式接口,其中包含一个抽象的方法。 - 在需要执行的地方,使用Lambda表达式创建接口的实例并实现方法。 以下是一个使用接口实现函数的示例代码: ```java // 定义接口 interface Callback { void onCallback(); } // 执行的类 class Caller { void doSomething(Callback callback) { // 执行某些操作 System.out.println("Doing something..."); // 执行 callback.onCallback(); } } // 使用的类 class CallbackHandler implements Callback { @Override public void onCallback() { System.out.println("Callback executed!"); } } // 测试代码 public class Main { public static void main(String[] args) { Caller caller = new Caller(); CallbackHandler callbackHandler = new CallbackHandler(); caller.doSomething(callbackHandler); } } ``` 运行以上代码,将会输出以下结果: ``` Doing something... Callback executed! ``` 这里的`CallbackHandler`实现了`Callback`接口,并在方法中定义了需要执行的操作。在`Caller`类中用`doSomething`方法时,将`callbackHandler`对象作为参数传入,然后执行方法。 这只是函数的一种简单实现方式,实际使用中可以根据具体的场景和需求选择合适的实现方式。希望以上信息对你有所帮助!如果你有任何问题,可以继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值