用Groovy思考第一章用Groovy簡化Java程式碼

chszs發表於2013-04-03
版權宣告:本文為博主chszs的原創文章,未經博主允許不得轉載。 https://blog.csdn.net/chszs/article/details/8757961

用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%in。

要驗證以上安裝是否正確,在命令列方式,執行:

>groovy -v
Groovy 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 name
	String note


	public 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 name
	String 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語言的關鍵特徵。


相關文章