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

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

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 如果您属于那群疯狂的人中的一员,热爱反射,实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来(8),喜欢利用它们能做的精彩事情,那么您将热衷于 Groovy 的 Meta 类,除此之外,它还提供了大量关于控制脚本运行的选项,就像反射一样,使用这些类

如果您属于那群疯狂的人中的一员,热爱反射,喜欢利用它们能做的精彩事情,那么您将热衷于 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. 嵌入 GroovyShell
package 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); 
 } 
} 

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

Tags:实战 Groovy Java

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