Что использовать вместо `defineClass` в Java10? - PullRequest
0 голосов
/ 22 мая 2018

Я использую метод defineClass() из ClassLoader, чтобы определить класс из массива байтов.Я выбираю этот метод, используя отражение:

ClassLoader.class.getDeclaredMethod(
    "defineClass", String.class, byte[].class, int.class, int.class);

Java10 жалуется на рефлексивное использование defineClass.

Что я должен использовать вместо этого?

1 Ответ

0 голосов
/ 22 мая 2018

MethodHandles.Lookup.defineClass представляется благословенной заменой.Однако обратите внимание, что определяемый вами класс должен находиться в том же пакете времени выполнения, что и класс поиска lookup.Вы не сможете создавать классы в пакетах, которые существуют в других модулях, ограничения, которых не было в предыдущих методах.В зависимости от вашего варианта использования эти проблемы могут возникать или не возникать.

Для последующего чтения Рафаэль Винтерхальтер опубликовал в блоге о новые ограничения в контексте своей работы с Byte Buddy.Если вы достаточно технически разбираетесь в проблемах, связанных с произвольными определениями классов среды выполнения, это может вас заинтересовать.

...