Что использовать вместо `defineClass` в Java10?

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

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

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

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

4 голоса | спросил igr 22 Maypm18 2018, 18:30:50

1 ответ


0
MethodHandles.Lookup.defineClass выглядит как благословенная замена.Однако обратите внимание, что определяемый вами класс должен находиться в том же пакете времени выполнения, что и класс поиска lookup.Вы не сможете создавать классы в пакетах, которые существуют в других модулях, ограничения, которых не было в предыдущих методах.В зависимости от вашего варианта использования, эти проблемы могут возникнуть или не возникнуть.Для последующего чтения Рафаэль Винтерхальтер написал в блоге о новых ограничениях в контексте своей работы с Байтом Бадди.Если вы достаточно технически разбираетесь в проблемах, связанных с произвольными определениями классов среды выполнения, это может вас заинтересовать.
ответил Matt Leidholm 22 Maypm18 2018, 19:51:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132