Описание тега methodhandle

Используйте этот тег для вопросов, касающихся классов Java MethodHandle/MethodHandles из API java.lang.invoke.
0 ответов

Какая связь между MethodHandles.foldArguments и MethodHandle.asCollector?

Javadoc для MethodHandles.foldArguments содержит это примечание в скобках: (Обратите внимание, что dropArguments можно использовать для удаления любых аргументов, которые комбинатор или цель не желают получать. Если некоторые из входящих аргументов…
09 июл '14 в 17:35
0 ответов

java.lang.NoClassDefFoundError: jdk.nashorn.internal.scripts.JO28P0

Я закончил библиотеку для Java, и я использовал ее для замены java.lang.invoke пакет (т. е. добавьте его в загрузчик классов загрузки перед обычной библиотекой JVM). В пакете он динамически генерирует байт-коды для дескрипторов метода. Спасибо, если…
09 мар '17 в 19:03
4 ответа

Как я могу улучшить производительность Field.set (perhap используя MethodHandles)?

Я пишу код, который вызывает Field.set а также Field.get много много тысяч раз. Очевидно, это очень медленно из-за отражения. Я хочу посмотреть, смогу ли я улучшить производительность, используя MethodHandles в Java7. Пока вот что у меня есть: Вмест…
07 мар '14 в 07:47
2 ответа

Зачем использовать отражение для доступа к членам класса, когда MethodHandle быстрее?

С выпуском Java 7 пришли MethodHandle, который позволяет пользователю вызывать метод, как если бы он использовал свой базовый байт-код. В частности, MethodHandles.Lookup Класс предоставляет фабричные методы для создания дескрипторов методов для дост…
06 июн '15 в 00:28
1 ответ

Кэширование результата MethodHandles.lookup()?

Я работаю в ситуации, когда MethodHandles.Lookup класс используется часто. В этой ситуации целесообразно сохранить ценность MethodHandles.lookup() между несколькими поисками? (В частности, единственный метод поиска, который я использую, это unreflec…
18 сен '14 в 20:28
0 ответов

ScriptEngineManager.getEngineByName("nashorn") завершается ошибкой из-за java.lang.invoke.WrongMethodTypeException

Я не могу создать ScriptEngine за nashorn в Java 8 (IBM J9JVM). В следующем коде двигатель null, private static void runOther(String[] args){ ScriptEngineManager engineManager = new ScriptEngineManager(); ScriptEngine engine = engineManager.getEngin…
11 мар '17 в 01:41
2 ответа

Почему я не могу.invokeExact() здесь, хотя MethodType в порядке?

Для одного из моих проектов я должен сделать динамические вызовы конструктора. Но так как это Java 7, вместо "классического" API отражения, я использую java.lang.invoke. Код: @ParametersAreNonnullByDefault public class PathMatcherProvider { private …
03 дек '14 в 17:48
0 ответов

LinkageError при использовании MethodHandle.publicLookup() в файлах WAR

У нас есть проблема, которую мы не можем объяснить, почему это происходит. возможно, кто-то здесь может нам дать некоторые подсказки, что происходит в этом случае. у нас есть простой репроусер, который показывает проблему package com.example.demo; i…
1 ответ

Используйте LambdaMetafactory.metafactory() для простого нестатического геттера

У меня простой Person класс с getName() который возвращает String: public class Person { public String getName() {...} } Как я использую LambdaMetafactory создать лямбду для этого нестатического метода getName() во время выполнения? Вот что я получи…
11 янв '18 в 09:14
1 ответ

Объединение MethodHandles.publicLookup() с Method.setAccessible(true)

Я это понимаю publicLookup() быстрее, чем lookup() для публичных методов, и я хотел бы использовать это. Если бы я должен был использовать MethodHandles.publicLookup().unreflect(Method) на Method который по своей сути не является публичным, но я наз…
19 сен '14 в 15:53
3 ответа

MethodHandle производительность

Я написал небольшой тест, который тестирует производительность java.lang.invoke.MethodHandle, java.lang.reflect.Method и прямые вызовы методов. Я прочитал это MethodHandle.invoke() производительность почти такая же, как прямые звонки. Но результаты …
25 мар '13 в 17:50
1 ответ

Получить дескриптор метода для перегруженного метода

Можно ли искать дескриптор метода для перегруженного метода в Java 7?
15 июн '12 в 08:00
2 ответа

Можно ли получить java.lang.reflection.Method непосредственно из файла Constant_Method_REF файла класса java?

Я использую BCEL для преобразования байт-кода метода для достижения перехватчика метода с анонимным стилем внутреннего класса, при перехвате метода мне нужно обработать некоторые аннотации для перехваченного метода. Я использую BCEL для перехвата до…
23 окт '13 в 17:35
2 ответа

Как мне найти конструктор массива MethodHandle с MethodHandles.Lookup?

Как я могу получить MethodHandle для конструктора массива, как int[]::new? Это не работает: public static void main(String[] args) throws Throwable { MethodHandles.Lookup lookup = MethodHandles.publicLookup(); MethodHandle mh = lookup.findConstructo…
18 мар '16 в 02:29
2 ответа

Преобразование MethodType для MethodHandle для принятия параметров Array Object

Я хочу адаптироваться String.startsWith от (String, String)boolean в (String[])booleanтак что он может принимать String[] параметры, в которых первые два параметра будут сопоставлены с (String, String), Поэтому я написал ниже пример кода: MethodHand…
29 янв '15 в 21:41
1 ответ

Почему checkcast-инструкция отсутствует для (int)MethodHandle.invokeExact?

Я создал 2 простых класса для попробовать Java MethodHandle-API: public class Foo { private static int staticField; public static Object getStaticField() { return staticField; } } другой класс для вызова метода Foo.getStaticField() двумя способами -…
20 апр '16 в 12:11
1 ответ

Локальные переменные в MethodHandle

java.lang.invoke.MethodHandle и друзья позволяют генерировать исполняемый код, отвечающий требованиям JIT, с помощью ряда комбинаторов. Как я могу создать локальные переменные в MethodHandles? В идеале метод подписи, который я хочу, выглядит примерн…
14 авг '18 в 23:06
0 ответов

Java 8 Update 51 (sun-jdk-8u51) Неустранимая ошибка времени выполнения после нулевого вызова MethodHandle invokeExact с 448 аргументами System::gc Runnable

Резюме Мне удалось скомпилировать интерфейс с основным методом, который вызывает нулевой метод invokeExact MethodHandle с 448 экземплярами ссылки на метод Runnable (System::gc). Когда я запустил интерфейс, в среде выполнения Java была обнаружена фат…
18 янв '16 в 15:13
2 ответа

MethodHandle Manipulation

Для моей работы с aspectJ и invokedynamic мне нужно вложить совет в метод, когда pointcut соответствует вызываемому методу. Сначала я заменил метод начальной загрузки invokedynamic-инструкции в сценарии своим собственным. Теперь в моем методе началь…
19 дек '12 в 19:27
2 ответа

InvokeExact для объекта, тип которого динамически загружается загрузчиком классов

Я потратил целый день на эту проблему. Моя проблема заключается в том, как сделать метод MethodHandle.invokeExact для экземпляра, тип класса которого динамически загружается во время выполнения программы. Чтобы сделать проблему более ясной, я показы…