Мне интересно, есть ли в java способ принять java-код в качестве пользовательского ввода, а затем запустить его. Например, пользователь может ввести:System.out.println(someMethod.toString());
и он распечатает вывод из someMethod
.
Принятие кода Java в качестве пользовательского ввода
Ответы (3)
Компиляция случайного кода, написанного пользователем, может быть очень опасной. Но вы можете попробовать использовать Java Compiler API, или если вы хотите что-то похожее, но не строго java, используйте groovy (проще смотреть, что вы хотите, с объектом GroovyShell)
Я не пытался сделать что-то подобное сам, но нашел несколько полезных ответов здесь: Преобразовать строку в код
Будьте очень осторожны, если вам это удастся.
Я действительно не знаю, можете ли вы преобразовать пользовательский ввод в исполняемый код, но вы можете заставить программу принимать слова, связанные с методами.
if(input == someMethod)
{
someMethod();
}
Взгляните на beanshell, который может интерпретировать строку Java и запускать команды.
Но будьте очень осторожны. Предоставление доступа к этому открывает ОГРОМНУЮ дыру в безопасности!