fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.function.BinaryOperator;
  5. import java.util.function.Function;
  6. import java.util.function.UnaryOperator;
  7. import java.util.stream.Stream;
  8.  
  9. class Ideone
  10. {
  11. Function<String, BigDecimal> NewPrice = BigDecimal::new;
  12. UnaryOperator<BigDecimal> DoublePrice = price -> price.multiply(BigDecimal.valueOf(2L));
  13. BinaryOperator<BigDecimal> WholesalePrice = (price, advantage) -> price.add(advantage);
  14. UnaryOperator<BigDecimal> WholesalePrice80 = price -> WholesalePrice.apply(price, BigDecimal.valueOf(80L));
  15. UnaryOperator<BigDecimal> WholesalePrice200 = price -> WholesalePrice.apply(price, BigDecimal.valueOf(200L));
  16.  
  17. void doCalc() {
  18. Function<String, BigDecimal> CalcPrice = NewPrice
  19. .andThen(DoublePrice)
  20. .andThen(WholesalePrice80)
  21. .andThen(DoublePrice)
  22. .andThen(WholesalePrice200);
  23.  
  24. Stream.of("120", "100").map(CalcPrice).forEach(System.out::println);
  25. }
  26.  
  27. public static void main (String[] args) throws java.lang.Exception
  28. {
  29. new Ideone().doCalc();
  30. }
  31. }
Success #stdin #stdout 0.23s 320832KB
stdin
Standard input is empty
stdout
840
760