实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来
2009-11-19 00:00:00 来源:WEB开发网
清单 5. 嵌入的 Groovy 代码package com.vanward.gembed;
import com.vanward.groovy.Song;
import java.util.Collection;
import java.util.Iterator;
public class SongEmbedGroovy{
public static void main(String args[]) {
Collection coll = (Collection)Song.getSongsForDirectory
("C:\\music\\temp\\mp3s");
for(Iterator it = coll.iterator(); it.hasNext();){
System.out.println(it.next());
}
}
}
Groovy 类加载器
就在您以为自己已经掌握全部的时候,我要告诉您的是,还有更多在 Java 语言中使用 Groovy 的方法。除了通过直接编译把 Groovy 脚本集成到 Java 程序中的这个选择之外,当我想直接嵌入脚本时,还有其他一些选择。
例如,我可以用 Groovy 的 GroovyClassLoader ,动态地 加载一个脚本并执行它的行为,如清单 6 所示:
清单 6. GroovyClassLoader 动态地加载并执行 Groovy 脚本package com.vanward.gembed;
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import groovy.lang.MetaMethod;
import java.io.File;
public class CLEmbedGroovy{
public static void main(String args[]) throws Throwable{
ClassLoader parent = CLEmbedGroovy.class.getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(
new File("C:\\dev\\groovy-embed\\src\\groovy\\
com\\vanward\\groovy\\Songs.groovy"));
GroovyObject groovyObject = (GroovyObject)
groovyClass.newInstance();
Object[] path = {"C:\\music\\temp\\mp3s"};
groovyObject.setProperty("args", path);
Object[] argz = {};
groovyObject.invokeMethod("run", argz);
}
}
Meta,宝贝
更多精彩
赞助商链接