java实现回调实例(附完整源码)
时间: 2023-10-17 07:10:16 浏览: 56
回调是一种常见的编程模式,它允许一个对象或函数在特定事件发生时调用另一个对象或函数。
在Java中,实现回调有多种方式,其中一种是使用接口和回调函数。
下面是一个使用回调的示例,其中一个类(Caller)调用另一个类(Callee)中的方法,并在该方法完成后调用一个回调函数来通知Caller。
接口定义:
```java
public interface Callback {
public void onComplete();
}
```
Callee类:
```java
public class Callee {
public void doSomething(Callback callback) {
// 模拟执行一个操作
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 操作完成后调用回调函数
callback.onComplete();
}
}
```
Caller类:
```java
public class Caller implements Callback {
private Callee callee;
public Caller() {
this.callee = new Callee();
}
public void doCall() {
// 调用Callee的方法,并将自身作为回调函数传入
callee.doSomething(this);
System.out.println("Caller: doCall() completed");
}
@Override
public void onComplete() {
System.out.println("Caller: onComplete() called");
}
public static void main(String[] args) {
Caller caller = new Caller();
caller.doCall();
}
}
```
在这个示例中,Caller类实现了Callback接口,并在doCall()方法中调用Callee的doSomething()方法,并将自身作为回调函数传入。
当Callee中的操作完成后,它调用回调函数onComplete(),Caller中的相应方法被调用。
输出结果:
```
Caller: onComplete() called
Caller: doCall() completed
```
完整源代码如下:
```java
public interface Callback {
public void onComplete();
}
public class Callee {
public void doSomething(Callback callback) {
// 模拟执行一个操作
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 操作完成后调用回调函数
callback.onComplete();
}
}
public class Caller implements Callback {
private Callee callee;
public Caller() {
this.callee = new Callee();
}
public void doCall() {
// 调用Callee的方法,并将自身作为回调函数传入
callee.doSomething(this);
System.out.println("Caller: doCall() completed");
}
@Override
public void onComplete() {
System.out.println("Caller: onComplete() called");
}
public static void main(String[] args) {
Caller caller = new Caller();
caller.doCall();
}
}
```