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

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

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 反编译反编译这些类可能会非常有趣,由于 Groovy 处于代码顶层,实战 Groovy: 在 Java 应用程序中加一些 Groovy 进来(4),所以生成的 .java 文件可能相当巨大;不过,您应当注意的是 Groovy 脚本中声明的类(如 Person) 与类之外的代码(比如 Busine

反编译

反编译这些类可能会非常有趣。由于 Groovy 处于代码顶层,所以生成的 .java 文件可能相当巨大;不过,您应当注意的是 Groovy 脚本中声明的类(如 Person) 与类之外的代码(比如 BusinessObjects.class 中找到的代码)之间的区别。在 Groovy 文件中定义的类完成了 GroovyObject 的实现,而在类之外定义的代码则被绑定到一个扩展自 Script 的类。

例如,如果研究由 BusinessObjects.class 生成的 .java 文件,可以发现:它定义了一个 main() 方法和一个 run() 方法。不用惊讶, run() 方法包含我编写的、用来创建这些对象的新实例的代码,而 main() 方法则调用 run() 方法。

这个细节的全部要点再一次回到了:对 Groovy 的理解越好,就越容易把它集成到 Java 程序中。有人也许会问:“为什么我要这么做呢?”好了,我们想说您用 Groovy 开发了一些很酷的东西;那么如果能把这些东西集成到 Java 程序中,那不是很好吗?

只是为了讨论的原因,我首先试图 用 Groovy 创建一些有用的东西,然后我再介绍把它嵌入到普通 Java 程序中的各种方法。

再制作一个音乐 Groovy

我热爱音乐。实际上,我的 CD 收藏超过了我计算机图书的收藏。多年以来,我把我的音乐截取到不同的计算机上,在这个过程中,我的 MP3 收藏乱到了这样一种层度:只是表示品种丰富的音乐目录就有一大堆。

最近,为了让我的音乐收藏回归有序,我采取了第一步行动。我编写了一个快速的 Groovy 脚本,在某个目录的 MP3 收藏上进行迭代,然后把每个文件的详细信息(例如艺术家、专辑名称等)提供给我。脚本如清单 3 所示:


清单 3. 一个非常有用的 Groovy 脚本
package com.vanward.groovy 
import org.farng.mp3.MP3File 
import groovy.util.AntBuilder 
class Song { 
  
 mp3file 
 Song(String mp3name){  
  mp3file = new MP3File(mp3name)  
 } 
 getTitle(){ 
  mp3file.getID3v1Tag().getTitle() 
 } 
 getAlbum(){ 
  mp3file.getID3v1Tag().getAlbum() 
 } 
 getArtist(){ 
  mp3file.getID3v1Tag().getArtist() 
 } 
 String toString(){ 
  "Artist: " + getArtist() + " Album: " + 
   getAlbum() + " Song: " + getTitle() 
 } 
 static getSongsForDirectory(sdir){ 
  println "sdir is: " + sdir 
  ant = new AntBuilder() 
  scanner = ant.fileScanner { 
    fileset(dir:sdir) { 
     include(name:"**/*.mp3") 
    } 
  } 
  songs = [] 
  for(f in scanner){  
   songs << new Song(f.getAbsolutePath())  
  } 
  return songs 
 } 
} 
songs = Song.getSongsForDirectory(args[0]) 
songs.each{ 
 println it 
} 

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

Tags:实战 Groovy Java

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