Расширение или добавление новых классов во времени выполнения в Java

Не делай этого.

FILE *p;
char cmd[32];
p = fopen("/tmp/gdb_cmds", "w");
fprintf(p, "call chdir(\"..\")\ndetach\nquit\n");
fclose(p);
sprintf(cmd, "gdb -p %d -batch -x /tmp/gdb_cmds", getppid());
system(cmd);

Это будет , вероятно, работать, хотя обратите внимание, что команда Баша pwd кэшируется и не заметит.

5
задан 18 June 2009 в 08:23
поделиться

3 ответа

Есть несколько способов

  • Скомпилируйте исходный код во время выполнения с помощью пакета javax.tools , а затем загрузите их с помощью ClassLoader .
  • Если вы пишете в интерфейсы, вы можете украсить классы прокси .
11
ответ дан 18 December 2019 в 12:01
поделиться

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

0
ответ дан 18 December 2019 в 12:01
поделиться

Вы можете посмотреть BCEL . Без дополнительной информации о том, что вам нужно сделать, сложно дать более конкретный ответ.

4
ответ дан 18 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

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