使用表达式的结果和生成该值的表达式创建一个字符串。可能吗?

时间:2010-04-29 20:04:56

标签: java string

String r = SomeThing.toExecString("new Object().toString()");

执行时r的值为:

"new Object().toString() = java.lang.Object@c5e3974"

这甚至可能吗?它需要一堆反思吗?内置编译器可能吗?

3 个答案:

答案 0 :(得分:2)

ScriptEngine engine = new ScriptEngineManager().getEngineByName("beanshell");
Object result = engine.eval("new Object().toString();");
System.out.println(result);

您可以使用BeanShell接近您想要的内容。我使用带有BeanShell 2.0b4的Java 6和类路径上基于JSR 223的bsh-engine.jar engine运行上面的代码。

答案 1 :(得分:1)

这里有一篇很棒的帖子: 生成静态代理类 - http://www.javaspecialists.eu/archive/Issue180.html

第一部分足以满足您的要求,我认为

答案 2 :(得分:0)

不知道你是否真的想要这个。但是你的问题可以通过这种方法解决:

String toExecString( String code ) {
    return String.format( 
        "\"%s\" = %s@%x", 
        code, 
        code.getClass().getName(), 
        code.hashCode() 
    );
}