用Groovy思考 第一章 用Groovy簡化Java代碼
作者:chszs,轉載需註明。部落客頁:http://blog.csdn.net/chszs
1. Groovy的安裝目前Groovy的最新版本為2.1.2版,下載地址為: http://groovy.codehaus.org/Download
下載後解壓groovy-binary-2.1.2.zip到某個目錄,然後設定GROOVY_HOME環境變數指向Groovy的解壓目錄。
再設定PATH環境變數,添加%GROOVY_HOME%\bin。
要驗證以上安裝是否正確,在命令列方式,執行:
>groovy -vGroovy Version: 2.1.2 JVM: 1.7.0_09 Vendor: Oracle Corporation OS: Windows 7
表示Groovy安裝成功。
2. Groovy的第一個例子我們先寫一個Java類Todo.java,內容如下:
import java.util.List;import java.util.ArrayList;public class Todo{private String name;private String note;public Todo(){}public Todo(String name, String note){this.name = name;this.note = note;}public String getName(){return name;}public void setName(String name){this.name = name;}public String getNote(){return note;}public void setNote(String note){this.note = note;}public static void main(String[] args){List<Todo> todos = new ArrayList<Todo>();todos.add(new Todo("1", "one"));todos.add(new Todo("2", "two"));todos.add(new Todo("3", "three"));for(Todo todo : todos){System.out.println(todo.getName() + " " + todo.getNote());}}}
我們用javac編譯它,用java運行它,一切正常。現在,我們把Todo.java改名為Todo.groovy,然後執行:
> groovy Todo.groovy
我們會驚異地發現,與Java的執行結果一樣。
結論:Groovy是相容Java的。
運行Java持續有兩步:用javac編譯類檔案,然後用java在JVM上執行編譯後的位元組碼檔案。
而Groovy是在運行時編譯位元組碼檔案,在開發中節省了編譯這個步驟。
3. 用Groovy簡化Java代碼下面,我們用Groovy簡化JavaBean為GroovyBean。
import java.util.List;import java.util.ArrayList;public class Todo{String name;String note;public static void main(String[] args){List<Todo> todos = new ArrayList<Todo>();todos.add(new Todo(name:"1", note:"one"));todos.add(new Todo(name:"2", note:"two"));todos.add(new Todo(name:"3", note:"three"));for(Todo todo : todos){System.out.println(todo.name + " " + todo.note);}}}
執行結果仍然一樣。
可見,
1)省略了JavaBean的getter和setter方法;
2)預設情況,所有的類屬性都是public的;
3)建構函式很有特色,Map方式。
4. 用Groovy再進一步簡化代碼
public class Todo{String nameString notepublic static void main(String[] args){def todos = new ArrayList()todos.add(new Todo(name:"1", note:"one"))todos.add(new Todo(name:"2", note:"two"))todos.add(new Todo(name:"3", note:"three"))for(Todo todo : todos)println "${todo.name} ${todo.note}"}}
執行結果仍然一樣。
可見,
1)List和ArrayList省略了類型;
2)省略了分號;
3)列印語句省略了System.out。
5. 用Groovy再進一步省略main()函數
public class Todo{String nameString note}def todos = [new Todo(name:"1", note:"one"),new Todo(name:"2", note:"two"),new Todo(name:"3", note:"three")]todos.each{println "${it.name} ${it.note}"}
此代碼在groovyconsole控制台運行正常。
看了以上內容,你們對Groovy有什麼看法。下一節我們將介紹Groovy語言的關鍵特徵。