web-dev-qa-db-ja.com

Groovy-メインメソッドの配置

これが私のコードです:

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

コンパイルしたとき、groovyはmainメソッドを持っていないと言っています。しかし、私が猫のクラスを取り除くとき:

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

その有効。 anyクラスにmainメソッドがある限り、コードは有効であると思いましたが、私は間違っています。メインメソッドがクラスの1つに存在するときに、1つのクラスしか持てない理由を誰かが説明できますか?

13
user2475310

複数のクラスを持つことができますが、最初に定義されたクラスには、メインメソッドの実装が必要です。通常、スクリプトとして実行される場合、スクリプトはrun()メソッドで実行されます。

クラスを定義している場合は、クラスの名前がスクリプトの名前として使用されます。パブリッククラスが複数ある場合、実行可能な実装は最初に定義されたクラスの一部である必要があります。以下はうまくいくはずです:

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

GroovyコンソールでASTを調べると、明確な画像が得られます。

20
dmahapatro