WEB开发网
开发学院软件开发Java 实战 Groovy: 在 Java 应用程序中加一些 Groovy 进... 阅读

实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 清单 5. 嵌入的 Groovy 代码packagecom.vanward.gembed;importcom.vanward.groovy.Song;importjava.util.Collection;importjava.util.Iterator;publicclassSongEmbedG


清单 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,宝贝

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:实战 Groovy Java

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接