2014-05-18 14 views
11

Ecco il mio codice:Groovy - metodo Main posizionamento

class cat {} 
class dog { 
    static void main(String[] args) {} 
} 

Groovy Quando compilato dice che non ho un metodo main. Ma quando mi sbarazzerò della classe cat:

class dog { 
    static void main(String[] args) {} 
} 

È valido. Ho pensato, purché avessi il metodo principale in qualsiasi classe, il codice fosse valido, ma ho torto. Qualcuno può spiegare perché non posso avere più di una classe quando il metodo principale risiede in una delle classi?

risposta

15

È possibile avere più di una classe, ma la classe definita deve prima avere l'implementazione del metodo principale. Normalmente quando viene eseguito come script, lo script viene eseguito nel metodo run().

Nel caso di una classe definita, il nome della classe viene utilizzato come nome dello script. Nel caso in cui ci siano più di una classe pubblica, l'implementazione eseguibile deve essere parte della prima classe definita. Di seguito dovrebbe funzionare:

class Dog { 
    static void main(String[] args) { 
     println "hello" 
    } 
} 
class Cat {} 

È possibile ottenere un'immagine chiara quando si ispeziona AST nella console Groovy.

Problemi correlati