Как вызвать метод Varargs в Bytebuddy таким образом, чтобы выпекать массив аргументов в качестве константы в байт -код?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как вызвать метод Varargs в Bytebuddy таким образом, чтобы выпекать массив аргументов в качестве константы в байт -код?

Сообщение Anonymous »

Я генерирую занятия с Bytebuddy. В одном месте мне нужно вызвать статический метод утилиты, который принимает Varargs строки типа. Мой код выглядит так: < /p>

Код: Выделить всё

String[] myStringArray = generateParameters()
MethodCall.invoke(utilsCall)
.with(myStringArray)
< /code>
Это, кажется, работает просто отлично. В то время как JVM, который сгенерировал код, работает, я могу создать экземпляр сгенерированного класса с помощью отражения и вызвать сгенерированный метод. Однако, если я позвоню в getBytes () 
в сгенерированном классе и запишу его в файл *.jar, указал, что файл будет выглядеть так (после декомпиляции):

Код: Выделить всё

public class MyGeneratedClass {

// $FF: synthetic field
public static String[] methodCall$p1kp7a1;

public void myGeneratedMethod(){
MyUtils.myStaticMethod(methodCall$p1kp7a1)
}

}
Следовательно, попытка загрузить этот файл *.jar и вызов mygeneratedmethod бросает nullpointerexception , потому что синтетическое поле, сгенерированное Bytebuddy, никогда не было инициализировано. Фактически, сгенерированный *.class -файл не показывает никаких следов содержимого MyStringArray Я перешел в метод во время начального шага генерации.
Что я делаю неправильно? Мне нужно быть в состоянии написать сгенерированные классы в файлы и загружать их позже, с аргументами «запекаются».

Подробнее здесь: https://stackoverflow.com/questions/796 ... ents-array
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»