Генерация и компиляция кода во время выполнения

Скажем, у меня есть этот код, который использует некоторые входные данные (например, URL-путь), чтобы определить, какой метод запустить, с помощью отражения:

// init
map.put("/users/*", "viewUser");
map.put("/users", "userIndex");

// later
String methodName = map.get(path);
Method m = Handler.class.getMethod(methodName, ...);
m.invoke(handler, ...);

Это использует отражение, так что производительность может быть улучшена. Это можно сделать так:

// init
map.put("/users/*", new Runnable() { public void run() { handler.viewUser(); } });
map.put("/users", new Runnable() { public void run() { handler.userIndex(); } });

// later
Runnable action = map.get(path);
action.run();

Но вручную создавая все этиRunnableУ этого есть свои проблемы. Мне интересно, могу ли я генерировать их во время выполнения? Таким образом, у меня будет входная карта, как в первом примере, и я буду динамически создавать карту из второго примера. Конечно, генерация - это просто вопрос создания строки, но как насчет ее компиляции и загрузки?

Замечания: Я знаю, что повышение производительности настолько мало, что это прекрасный пример преждевременной оптимизации. Поэтому это академический вопрос, меня интересует генерация и компиляция во время выполнения.

Ответы на вопрос(4)

Ваш ответ на вопрос