我在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;
}
}
请提供一些示例或用例以帮助您使用此方法
最佳答案
简而言之,then用于链接消费者,因此输入将输入到第一和第二消费者,例如:
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));
因此,此处交易者将传递给
consumer1
,然后传递给consumer2
,依此类推。您不必实现此方法,也不必重写它。对于消费者,仅实现
accept
。andThen
方法是加入使用者的辅助工具。而不是将输入循环传递给所有这些输入。