Java中的接口回调实例

下面我将详细讲解Java中的接口回调实例,并提供两个示例说明。

下面我将详细讲解Java中的接口回调实例,并提供两个示例说明。

接口回调实例

在Java中,接口回调是一种设计模式,常用于构建事件处理系统或异步任务处理机制。

接口回调指的是通过接口定义方法,并在其他地方实例化这个接口,然后在需要的时候调用这个方法。通过接口回调实现了部分函数的多态。

下面是接口回调的基本实现流程:

  1. 定义一个接口(Callback),这个接口里面定义一个需要回调的方法。
  2. 在需要的类中使用一个该接口的对象接收一个实例化的类,实现接口的方法。
  3. 调用回调函数。

示例1

下面我们来看一个简单的示例,演示如何使用接口回调。

//定义一个回调接口
interface Callback {
    void onCall();
}

//实现回调函数的类
class Caller {
    private Callback callback;

    public void setCallback(Callback callback) {
        this.callback = callback;
    }

    public void call() {
        System.out.println("Caller calling...");
        callback.onCall();
    }
}

//使用接口回调:实例化Callback接口的实现类,并将这个实现类的对象和Caller连接起来
public class CallbackDemo {
    public static void main(String[] args) {
        Caller caller = new Caller();
        caller.setCallback(() -> System.out.println("Callback called."));
        caller.call();
    }
}

输出结果:

Caller calling...
Callback called.

在上面的示例中,我们定义了一个回调接口Callback,用于在Caller类中调用onCall方法。通过setCallback方法,将Callback接口的实现类的对象传入Caller类中,实现类中的onCall方法就变成了Caller类的回调函数。

在CallbackDemo示例中,我们实例化了一个Caller对象,然后通过Lambda表达式实现了Callback接口的onCall方法,最后通过caller.call()方法,间接调用了实现类的onCall方法。

示例2

下面我们来看一个稍微复杂一些的例子,在图书商店购买书籍并且获取折扣。

//定义一个折扣类
class Discount {
    public void onBookPurchased(float discount) {
        System.out.println("Book purchased with a discount of " + discount);
    }
}

//定义一个购买图书的类
class BookStore {
    public void purchase(Book book, Discount discount) {
        float price = book.getPrice();
        float finalPrice = price - price * 0.1f;
        discount.onBookPurchased(finalPrice);
    }
}

//使用接口回调实现折扣功能
public class BookStoreDemo {
    public static void main(String[] args) {
        Book book = new Book("Java Programming", 100f);
        Discount discount = new Discount();
        new BookStore().purchase(book, discount);
    }
}

//定义一个图书类
class Book {
    private String title;
    private float price;

    public Book(String title, float price) {
        this.title = title;
        this.price = price;
    }

    public float getPrice() {
        return price;
    }
}

输出结果:

Book purchased with a discount of 90.0

在这个示例中,我们定义了一个折扣类Discount,拥有onBookPurchased方法,用于在BookStore类中调用。我们在BookStore中使用接口回调,将Discount对象传递给purchase方法。然后我们通过计算得到最终价格,把这个价格传递给折扣类的onBookPurchased方法,在这个方法中输出折扣价格。

在BookStoreDemo中,我们实例化了一个Book对象和一个Discount对象,然后传入BookStore对象中的purchase方法,输出了折扣价格。

这个示例中,我们通过接口回调实现了简单的折扣功能。思路类似于事件处理,通过定义一个断面(Discount类),将控制权交给使用者(BookStore类)来实现具体的操作。

本文标题为:Java中的接口回调实例

基础教程推荐