实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来
2009-11-19 00:00:00 来源:WEB开发网如果您属于那群疯狂的人中的一员,热爱反射,喜欢利用它们能做的精彩事情,那么您将热衷于 Groovy 的 Meta 类。就像反射一样,使用这些类,您可以发现 GroovyObject 的各个方面(例如它的方法),这样就可以实际地 创建 新的行为并执行它。而且,这是 Groovy 的核心 —— 想想运行脚本时它将如何发威吧!
注意,默认情况下,类加载器将加载与脚本名称对应的类 —— 在这个例子中是 Songs.class,而不是 Song.class>。因为我(和您)知道 Songs.class 扩展了 Groovy 的 Script 类,所以不用想也知道接下来要做的就是执行 run() 方法。
您记起,我的 Groovy 脚本也依赖于运行时参数。所以,我需要恰当地配置 args 变量,在这个例子中,我把第一个元素设置为目录名。
更加动态的选择
对于使用编译好的类,而且,通过类加载器来动态加载 GroovyObject 的替代,是使用 Groovy 优美的 GroovyScriptEngine 和 GroovyShell 动态地执行 Groovy 脚本。
把 GroovyShell 对象嵌入普通 Java 类,可以像类加载器所做的那样动态执行 Groovy 脚本。除此之外,它还提供了大量关于控制脚本运行的选项。在清单 7 中,可以看到 GroovyShell 嵌入到普通 Java 类的方式:
清单 7. 嵌入 GroovyShellpackage com.vanward.gembed;
import java.io.File;
import groovy.lang.GroovyShell;
public class ShellRunEmbedGroovy{
public static void main(String args[]) throws Throwable{
String[] path = {"C:\\music\\temp\\mp3s"};
GroovyShell shell = new GroovyShell();
shell.run(new File("C:\\dev\\groovy-embed\\src\\groovy\\
com\\vanward\\groovy\\Songs.groovy"),
path);
}
}
更多精彩
赞助商链接