2015-02-27 2 views
0

Я хочу напечатать код Java для консоли во время выполнения. Я не ожидаю точно того же кода, но логики там.Извлечь исходный код во время выполнения

Учитывая следующее:

Predicate<String> predicate = (s) -> s.equals("yes");

Я хотел бы назвать:

String javaCode = getCodeString(predicate);

И имеют javaCode логически равную: (s) -> s.equals(\"yes\")").

Возможно ли это?

+3

Нет, это невозможно. –

+0

Java скомпилирован в байт-код, так что самое близкое, что вы могли бы прийти, возможно, читает это как-то ... – Segmented

+0

может использовать java «отражение» ... вы могли бы найти что-то .. = ( –

ответ

0

Не легко. Даже если у вас есть исходный код, доступный вашему приложению, вы не сможете сделать это в описанном контексте. Теоретически можно было бы получить исходный код (или встроенный в JAR). Тогда теоретически, если бы вы знали номер строки, вы могли получить исходный код. Однако, чтобы узнать номер строки, вы должны выбросить исключение. Использование лямбда сделало бы это еще более сложным. Если вы хотите начать чтение байтового кода, вы можете сделать что-то подобное, но то, что вы просите, очень сложно.

Смежные вопросы