代码之家  ›  专栏  ›  技术社区  ›  OscarRyz

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

  •  2
  • OscarRyz  · 技术社区  · 14 年前

    就像

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

    当执行时 r

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

    3 回复  |  直到 14 年前
        1
  •  2
  •   McDowell    14 年前
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("beanshell");
    Object result = engine.eval("new Object().toString();");
    System.out.println(result);
    

    你可以使用BeanShell接近你想要的。我用java6和 BeanShell 2.0b4 以及基于JSR223的 bsh-engine.jar engine 在类路径上。

        2
  •  1
  •   ekeren    14 年前
        3
  •  0
  •   tangens    14 年前

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

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