2015-02-24 100 views
0

如果我有一個名爲Character.groovy(沒有明確的構造函數)類,並嘗試實例化它,我得到一個消息,說:保留類名在Groovy

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: java.lang.Character() 

但如果我更改類名到Characterr.groovy,然後我能夠實例化一個對象並按預期使用它。那麼在Groovy類中是否存在保留字?如果是這樣,爲什麼角色是其中之一?

回答

3

它不是保留的類名稱,但已經有一個名稱爲(java.lang.Character)的類作爲包自動在java中導入包java.lang導入。

這可能會一直髮生,尤其是如果您是java開發人員而不習慣獲取java.io包等,爲您autoimported由常規(例如,File)(另見What packages does 1) Java and 2) Groovy automatically import?

有三種方式圍繞它:

  • Java的方式:用全名解決您的課,那就是包和類名稱。例如org.myrpg.Character

  • groovy方式:用新名稱導入類。例如代替使用import org.myrgp.Character as RPGChar,然後使用RPGChar

  • 禪方式:多數情況下,這是不值得的屁股,更容易重新命名你的班級。如果你絆倒了這一次,那麼機會非常高,你會再次絆倒這一點,只有像@CompileStatic或IDE 可能在編譯時或編寫時注意到這一點。