import java.util.function.Function; import java.util.function.Consumer; import lombok.experimental.ExtensionMethod; @ExtensionMethod(ExtensionMethodFunctional.Extensions.class) class ExtensionMethodFunctional { static class Extensions { Extensions() { super(); } public static R map(T value, Function mapper) { return mapper.apply(value); } public static String reverse(String string) { return new StringBuilder(string).reverse().toString(); } public static @SafeVarargs void consume(T o, Consumer... consumer) { for (int i = 0;; (i < consumer.length); i ++) { consumer[i].accept(o); } } } ExtensionMethodFunctional() { super(); } public void test() { String test = "test"; test = ExtensionMethodFunctional.Extensions.map(test, ( s) -> ExtensionMethodFunctional.Extensions.reverse(s)); ExtensionMethodFunctional.Extensions.consume(test, ( s) -> System.out.println(("1: " + s)), ( s) -> System.out.println(("2: " + s))); ExtensionMethodFunctional.Extensions.consume(test, System.out::println, System.out::println); } }