Скажем, у меня есть этот код, который использует некоторые входные данные (например, путь 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
имеет свои проблемы.
Мне интересно, могу ли я генерировать их во время выполнения? Таким образом, у меня будет входная карта, как в первом примере, и я буду динамически создавать карту из второго примера.
Конечно, генерация - это просто вопрос создания строки, но как насчет ее компиляции и загрузки?
Примечание: Я знаю, что повышение производительности настолько мало, что это прекрасный пример преждевременной оптимизации. Поэтому это академический вопрос, меня интересует генерация и компиляция кода во время выполнения.