假设我们有一个这样的字符串:
String string2code = "variable = 'hello';";
我们如何将该字符串转换为这样的一段代码?:
variable = "hello";
假设我们有一个这样的字符串:
String string2code = "variable = 'hello';";
我们如何将该字符串转换为这样的一段代码?:
variable = "hello";
GroovyShell
是答案:
String string2code = "variable = 'hello'; return variable.toUpperCase()";
def result = new GroovyShell().evaluate string2code
assert result == "HELLO"
如果您以后遇到更复杂的东西,您可以使用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 ){
...
}
}
也许你可以看看Janino
Janino 是一个小型的 java 编译器,它不仅可以编译源文件,还可以编译你所拥有的表达式。