gpt4 book ai didi

Java 8 - Consumer's andThen 的使用

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:56:54 24 4
gpt4 key购买 nike

我有以下 POC 可以使用 Java 8 功能。

我想在接受方法后更新数据库。使用 andThen() 好吗?什么时候调用这个方法?谁叫它?

andThen()方法的基本用法是什么?查看文档令人困惑。

public class StockTest {

public static void main(String[] args) {

List<Trader> traders = new ArrayList<>();

Random random = new Random();

// Initializing trading a/c's.
for (int i = 0; i < 10; i++) {
Trader trader = new Trader((random.nextInt(100) + 1) * 3);
traders.add(trader);
}
// Display Trade accounts.
System.out.println("Before Bonus, Units are:");
for (Trader trader : traders) {
System.out.print(trader.getUnits() + "\t");
}

// Add bonus to each trader.
traders.forEach(new Consumer<Trader>() {

@Override
public void accept(Trader trader) {
trader.updateBonus(2);
}

@Override
public Consumer<Trader> andThen(Consumer<? super Trader> after)
{
System.out.println("In andThen");
return Consumer.super.andThen(after);
}
});

// Display Trade accounts after bonus applied..
System.out.println("\nAfter bonus:");
for (Trader trader : traders) {
System.out.print(trader.getUnits() + "\t");
}

}

}

class Trader {
private int units;

public Trader(int initialUnits) {
this.units = initialUnits;
}

public int getUnits() {
return units;
}

public void setUnits(int units) {
this.units = units;
}

public void updateBonus(int bonusUnits) {
this.units = this.units * bonusUnits;
}
}

请帮助提供一些示例或用例以利用此方法

最佳答案

简而言之 andThen 用于链接消费者,因此输入将转到第一和第二消费者,如下所示:

Consumer<Trader> consumer1 = new Consumer<Trader>() {

@Override
public void accept(Trader trader) {
trader.updateBonus(2);
}
};

Consumer<Trader> consumer2 = new Consumer<Trader>() {

@Override
public void accept(Trader trader) {
// do something
}
};
// Add bonus to each trader.
traders.forEach(consumer1.andThen(consumer2));

所以这里 Trader 将被传递给 consumer1,然后传递给 consumer2 等等。

您不必实现或覆盖此方法。对于消费者,只实现accept

andThen 方法是加入消费者的辅助工具。而不是在循环中将输入传递给所有这些。

关于Java 8 - Consumer's andThen 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47449580/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com