Объявление метода во время выполнения в Java - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь объявить метод Java для класса во время выполнения.Я не должен писать метод во время компиляции или жестко его кодировать.Думаю, есть способ использовать отражение, но я не могу понять, как это сделать.Как это может произойти?

Откуда все это произошло: я прочитаю ввод, как;

name=john,age=21
name=smith,age=23

, затем я должен получить доступ ко всем значениям их "имен" и "возраста"с помощью методов "getname" и "getage".

Однако слова имени и возраста можно изменить на ie.фамилия и длина;затем я должен получить доступ к их фамилии и длине с помощью методов «getsurname» и «getlength».

Я знаю, что буду использовать invoke для вызова методов getXXX.Но как я могу объявить их во время выполнения?Это актуальная проблема.

Ответы [ 3 ]

1 голос
/ 10 ноября 2011

Вы можете использовать библиотеку генерации байт-кода, такую ​​как ASM, библиотеку фрагментов кода, такую ​​как BeanShell, или использовать API компилятора для компиляции класса во время выполнения.

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

0 голосов
/ 10 ноября 2011

Я бы предположил, что вы можете использовать прокси-классы и, возможно, интерпретатор языка сценариев, который либо написан на Java, либо может взаимодействовать с ним (например, Rhino ).Если вам удастся интегрировать его с Rhino, вам, вероятно, придется написать метод в Javascript, но вы все равно сможете получить доступ к любым Java-объектам, которые вам могут понадобиться.

0 голосов
/ 10 ноября 2011

Отражение не предназначено для добавления новых методов в класс.Питер упомянул о некоторых продвинутых инструментах, которые могут помочь вам в этом.

...