2013-03-15 37 views
0

下面的Groovy/Gremlin片段有什麼區別? (均保存爲* .groovy文件,並與./gremlin.sh -e [filename].groovy運行)Groovy/Gremlin類的命名方案(需要大寫字母)

class user 
{ 
    String username 

    static void main(String[] args) 
    { 
     user mtm = new user() 
     mtm.username = "MuffinTheMan" 
     println mtm.username 
    } 
} 

class User 
{ 
    String username 

    static void main(String[] args) 
    { 
     User mtm = new User() 
     mtm.username = "MuffinTheMan" 
     println mtm.username 
    } 
} 

首先給出了類似這樣的3個編譯錯誤:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
Script1.groovy: 7: Apparent variable 'mtm' was found in a static scope but doesn't 
refer to a local variable, static field or class. Possible causes: 
You attempted to reference a variable in the binding or an instance variable from 
a static context. 
You misspelled a classname or statically imported field. Please check the spelling. 
You attempted to use a method 'mtm' but left out brackets in a place not allowed 
by the grammar. 
@ line 7, column 14. 
user mtm = new user() 

第二和編譯運行得很好,輸出:

MuffinTheMan 

回答

0

原來唯一的區別是第一個類名以小寫字母開頭,第二個類名以大寫字母開頭。有一些討論here,但在這個問題上很難找到很多有用的信息。我決定發佈這篇文章是因爲我正在打我的頭靠在牆上(而不是字面意思)試圖弄清楚爲什麼我的代碼(類名小寫的第一個字母)不能編譯,也許其他人可能會遇到這個問題。

如果其他人有更好的鏈接,就此問題進行更全面/清晰的討論,請發帖!