如何将字符串转换为一段代码(工厂方法模式?)

时间:2013-07-04 22:47:22

标签: java design-patterns groovy factory

假设我们有一个像这样的字符串:

String string2code = "variable = 'hello';";

我们如何将该String转换为这样的代码?:

variable = "hello";

3 个答案:

答案 0 :(得分:1)

GroovyShell就是答案:

String string2code = "variable = 'hello'; return variable.toUpperCase()";

def result = new GroovyShell().evaluate string2code
assert result == "HELLO"

答案 1 :(得分:1)

如果您以后遇到更复杂的问题,可以使用GroovyClassLoader编译整个班级。

private static Class loadGroovyClass( File file ) throws MigrationException {
    try {
        GroovyClassLoader gcl = new GroovyClassLoader( ExternalMigratorsLoader.class.getClassLoader() );

        GroovyCodeSource src = new GroovyCodeSource( file );
        Class clazz = gcl.parseClass( src );
        return clazz;
    }
    catch( CompilationFailedException | IOException ex ){
        ...
    }
}

答案 2 :(得分:0)

也许你可以看看Janino

Janino是一个小型java编译器,它不仅可以编译源文件,还可以编译你所拥有的表达式。