import java.util.function.Function; import lombok.experimental.ExtensionMethod; public @ExtensionMethod(value = ExtensionMethodInLambda.Extensions.class) class ExtensionMethodInLambda { 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 String trim(Integer integer) { return "0"; } } private static final Function testStatic = ( s) -> ExtensionMethodInLambda.Extensions.reverse(s); () { } public ExtensionMethodInLambda() { super(); } public void testSimple() { String test = "test"; test = ExtensionMethodInLambda.Extensions.map(test, ( s) -> ExtensionMethodInLambda.Extensions.reverse(s)); } public void testSameName() { String test = "test"; test = ExtensionMethodInLambda.Extensions.map(test, ( s) -> s.trim()); } public void testArgumentOfInvalidMethod() { String test = "test"; test.invalid(( s) -> s.reverse()); } }