И зачем вообще переводить release notes? Статья была бы ценна, если бы в ней были примеры использования новых фич, более детальное объяснение.
Вот например «Группы (-groups)» — это что? Я думаю, что любой чел мало знакомый с анлгийским это перевести сможет, а вот рассказать что это было бы полезно.
В данном случае нет никакой разницы, классы MethodType и MethodHandler введены для того, что бы обработать вызов invokedynamic «methodname» paramtypes.
Линкуется все это дело с использованием вызова bootstrap метода.
Пример. Есть bootstrap метод:
public static CallSite mybsm(
MethodHandles.Lookup callerClass, String dynMethodName, MethodType dynMethodType)
Есть код:
invokedynamic «add» "(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer)"
При выполнении кода (если для «add» он первый раз выполняется) будет вызван bootstrap метод с параметрами dynMethodName=«add», MethodType = MethodType.methodType(Integer.class, Integer.class, Integer.class), callerClass — ссылка на текущий lookup.
mybsm должен вернуть CallSite со ссылкой на MethodHandler, который соответствует названию (dynMethodName) и типу (dynMethodType). Далее происходит вызов invokeWithArguments, например MethodHandler'a.
Т.е. метод в invokedynamic линкуется с использованием bootstrap метода.
Собственно это и есть основная задача «the Da Vinci Machine Project», а не создание «лаконичного» аналога reflection api, как Вы написали.
Action<From, To> — если у меня есть 3 аргумента — нужно их оборачивать в еще 1н класс?
— «экспоненциальных взрывов» — wtf?
И зачем вообще переводить release notes? Статья была бы ценна, если бы в ней были примеры использования новых фич, более детальное объяснение.
Вот например «Группы (-groups)» — это что? Я думаю, что любой чел мало знакомый с анлгийским это перевести сможет, а вот рассказать что это было бы полезно.
В данном случае нет никакой разницы, классы MethodType и MethodHandler введены для того, что бы обработать вызов invokedynamic «methodname» paramtypes.
Линкуется все это дело с использованием вызова bootstrap метода.
Пример. Есть bootstrap метод:
public static CallSite mybsm(
MethodHandles.Lookup callerClass, String dynMethodName, MethodType dynMethodType)
Есть код:
invokedynamic «add» "(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer)"
При выполнении кода (если для «add» он первый раз выполняется) будет вызван bootstrap метод с параметрами dynMethodName=«add», MethodType = MethodType.methodType(Integer.class, Integer.class, Integer.class), callerClass — ссылка на текущий lookup.
mybsm должен вернуть CallSite со ссылкой на MethodHandler, который соответствует названию (dynMethodName) и типу (dynMethodType). Далее происходит вызов invokeWithArguments, например MethodHandler'a.
Т.е. метод в invokedynamic линкуется с использованием bootstrap метода.
Собственно это и есть основная задача «the Da Vinci Machine Project», а не создание «лаконичного» аналога reflection api, как Вы написали.