1. 前傳java
很久木有更新博客了,老是感受少點什麼,今天點開這個page,並非由於已然胸有文章,而是但願有一個佔位符,讓我能記錄點滴的學習歷程。編程
抒發一下心情先:最近的節奏不怎麼舒服,每一個週末都在看房的路上,終於,通過一個月的顛簸,房子終於訂下來啦,撒花。。。。函數式編程
哎?也許我能夠寫一篇關於買房的博客,嘿嘿:)函數
2. 言歸正傳學習
昨天開始,項目上來了一個新的project,是一個基於JBehave的function test project,其中實現代碼使用Groovy編寫。雖然以前在使用gradle的時候接觸過groovy,可是面對這個工程,須要本身直面那些groovy代碼的時候,已然感覺到了愛莫能助。gradle
你們不是都說groovy和java很像嗎?closure是什麼?函數式編程到底怎麼搞?這個方法怎麼用字符串作方法名呢?‘->’是個什麼意思?還有那些annotation,@Mixin @Delegate,這些都是從哪裏冒出來的呢???spa
因而,某菲下載了一本《Groovy in action》(中文版),貌似叫作什麼什麼in action的書都是好書,並且爲了節省體力特地下載了中文版,嘿嘿:)code
3. 言歸正正傳blog
當某菲翻開這本書的時候,看到的第一個信息點就是:groovy和java很像很像。繼承
某菲:做者君?!你要是不說清楚groovy和java哪裏很像很像的話,某菲但是會不開心的!
做者君因而擺出了這樣的說明:首先,groovy是基於java平臺而且運行於java虛擬機(JVM)之上的,同時java中的類庫都說能夠被groovy代碼調用的;其次,groovy和java是能夠相互調用(groovy能夠調用java,這是由於每個groovy類型都是java.lang.Object的子類;java中能夠調用groovy:將groovy類編譯到一個以.class結尾的文件中,而且把它放在java的classpath中);也就是說,某菲呀,你能夠把groovy理解爲建立java類的一種新途徑(運行時建立),groovy是使用了額外jar文件依賴的java。
4. 朝花夕拾之@Mixin
@Mixin用於繼承某個類中提供的方法,同時有能夠避免multiple inheritance帶來的問題。
groovy支持編譯時的Mixin
--》--->>我是編譯時Mixin的例子:
class Dog { def eat() { "eating..." } } @Mixin(Dog) class Cat { } Cat cat = new Cat() cat.eat() //returns "eating..."