2016-01-20 33 views
0

我正在使用現有的java代碼庫,但已經說服團隊使用交叉編譯,因此可以在groovy中完成新的開發,同時仍然使用舊的代碼庫。最好的兩個世界,低風險,很多好處等java類中的Groovy特性

我有一個問題,我想解決的是由Groovy的特徵功能完美處理,但它必須與現有的Java類或新的仍然想用java編寫的開發者。

在java中執行class duck implements FlyingAbility {會拋出一個關於實現的錯誤,IntelliJ的automatix修復就是在java類的trait中實現所有方法,就像它只是一個接口一樣。

有沒有一種方法讓特質在java類中使用特徵,類似於他們在常規類中的工作方式?

+0

我不這麼認爲 –

+0

Java 8默認方法呢? – Will

+0

Java 8的默認方法可以工作,但我們希望這個項目中的所有新代碼都是常規的,所以默認方法更像是一個計劃C. –

回答

3

你不能在Java類中使用traits。 Groovy特徵被實現爲它們應用到的類的編譯時轉換,而Java類不通過Groovy編譯器。

也就是說,it's usually very simple to convert Java code to Groovy和將@CompileStatic添加到類中通常會生成類似於等效Java的代碼,儘管(現在)具有更大的.class文件。