2016-04-08 7 views
-2

編集:私はノーの答えGroovy - クラス名は強制的に大文字で始める必要がありますか?

で票を下に取得していますので、私は質問を単純化しています私は Groovyのバージョン2.4.5(groovy ClassIssue.groovy)Windows上でコマンドラインからのGroovyスクリプトを呼び出していますJVM 1.8.0_51

はまた、Groovyの2.4.6

でのLinux上でテストなぜこの作品:

class Person { 
    String name 
    Person() {} 
} 

Person p = [name: 'Jahg'] 

しかし、これにはない:

class person { 
    String name 
    person() {} 
} 

person p = [name: 'Jahg'] // this line throws an exception 

唯一の違いは、クラスは、小文字で始まるです。

+0

あなたが存在しないと失敗し

myClazz mc 

とにかく大文字で始まるクラスの名前をつけるべきです。しかし、私はまだこの問題が発生した理由を知りたいと思います... – pczeus

+0

まだそれは私はあなたが私がMyClazzへのすべての参照の名前を変更しなかったことを想定していると思う、それはMyClazz –

答えて

0

(整形のための答えを使用して、コメントされている必要があります)

GroovyのコンパイラがJVM用のJavaクラスにスクリプト/ Groovyのクラスを変換するmeta programming magicの多くを行います。プロパティとメソッドを処理するための規則がかなりあります。

あなたの現在のスクリプトは、最初のクラスになります。その名前はscriptnameから派生しています。そのクラスの中では、mcに配列が割り当てられます。

mc = ['123', 'Jahg'] 

は、その後、それはメソッドの呼び出しになり

あなたは大文字でクラスを指定myClazz、この何myClazz方法

+0

私は多くのボンネットの下に起こるが、私はそれがmyClazz –

+0

を呼び出すことはできません理由として、あなたの説明に従わないことを理解...と - 真である –

+0

と呼ばれていた場合に動作します:MyClazz MC = [「123」、「Jahg」] –

関連する問題