Как
String r = SomeThing.toExecString("new Object().toString()");
И при выполнении значение r будет:
r
"new Object().toString() = java.lang.Object@c5e3974"
Возможно ли это вообще? Нужна ли куча размышлений? Может быть, встроенный компилятор?
ScriptEngine engine = new ScriptEngineManager().getEngineByName("beanshell"); Object result = engine.eval("new Object().toString();"); System.out.println(result);
Вы можете приблизиться к тому, что хотите, используя BeanShell. Я запустил приведенный выше код с Java 6 с BeanShell 2.0b4 и движком bsh-engine.jar на основе JSR 223 на пути к классам.
Здесь есть отличный пост: Генерация статических прокси-классов - http://www.javaspecialists.eu/archive/Issue180.html
Часть первая достаточно для того, что вы спросили, я думаю
Не знаю, действительно ли ты этого хотел. Но ваша проблема будет решена с помощью этого метода:
String toExecString( String code ) { return String.format( "\"%s\" = %s@%x", code, code.getClass().getName(), code.hashCode() ); }