Pull to refresh
0
0
Send message
Чем это оличается от:
@Service
class CreateUserService {
  public void createUser(...)
}
@Service
class ActivateUserService {
  public void activateUser(..)
}

Action<From, To> — если у меня есть 3 аргумента — нужно их оборачивать в еще 1н класс?
Автор:
— «экспоненциальных взрывов» — wtf?

И зачем вообще переводить release notes? Статья была бы ценна, если бы в ней были примеры использования новых фич, более детальное объяснение.

Вот например «Группы (-groups)» — это что? Я думаю, что любой чел мало знакомый с анлгийским это перевести сможет, а вот рассказать что это было бы полезно.
download.oracle.com/javase/7/docs/technotes/guides/vm/multiple-language-support.html

В данном случае нет никакой разницы, классы 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, как Вы написали.
хотелось бы еще сказать о наличии замечательного плагина для emacs:)

Information

Rating
Does not participate
Registered
Activity