Пост канала
В Java лямбда-выражение создаёт экземпляр функционального интерфейса. Во время выполнения этот экземпляр создаётся с помощью класса LambdaMetaFactory Следующий код на Java создаёт объект Function<String, String> Function<String, String> f = s -> s.toUpperCase(); Во время выполнения объект создаётся с помощью кода, аналогичного следующему: @SuppressWarnings("unchecked") void main() throws Throwable { MethodHandles.Lookup lookup; lookup = MethodHandles.lookup(); CallSite callSite; callSite = LambdaMetafactory.metafactory( lookup, "apply", MethodType.methodType(Function.class), MethodType.methodType(Object.class, Object.class), lookup.findStatic( getClass(), "lambda", MethodType.methodType(String.class, String.class) ), MethodType.methodType(String.class, String.class) ); MethodHandle target; target = callSite.getTarget(); Function<String, String> f; f = (Function<String, String>) target.invokeExact(); String msg; msg = f.apply("Hello, World!"); IO.println(msg); } private static String lambda(String s) { return s.toUpperCase(); } При выполнении этот код выведет в консоль HELLO, WORLD! Java Библиотека | Мы в Телеграм
Открыть в MAX- Просмотры
- 488
- ER
- 1,0%
- Реакции
- 5