2016-04-08 7 views
-2

EDIT: Ich bin eine Vereinfachung der Frage, da ich Stimmen bin immer unten ohne AntwortenGroovy - Klassenname muss mit einem Großbuchstaben für Zwang beginnen?

Ich bin ein starkes Skript von der Kommandozeile unter Windows (groovy ClassIssue.groovy) Groovy Version 2.4.5 JVM 1.8.0_51

Aufruf

auch mit Groovy 2.4.6

auf Linux getestet Warum funktioniert das:

class Person { 
    String name 
    Person() {} 
} 

Person p = [name: 'Jahg'] 

Aber dies nicht:

class person { 
    String name 
    person() {} 
} 

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

Der einzige Unterschied ist die Klasse beginnt mit einem Kleinbuchstaben.

+0

Sie nicht wie nicht gibt sollten Sie Ihre Klassen immer mit einem Großbuchstaben beginnen. – pczeus

+0

Das stimmt - aber ich würde immer noch gerne wissen, warum das passiert ... –

Antwort

0

(Sollte ein Kommentar gewesen, Antwort für Formatierungen verwenden)

Groovy-Compiler tut viel meta programming magic Ihr Skript/groovy Klasse Java-Klasse für JVM zu konvertieren. Es hat ein gutes bisschen Regeln, um Eigenschaften und Methoden zu handhaben.

Ihr aktuelles Skript wird zuerst eine Klasse. Sein Name wird von Skriptname abgeleitet. Innerhalb dieser Klasse ist mc das Array zugewiesen.

mc = ['123', 'Jahg'] 

Dann wird es einen Aufruf einer Methode myClazz

Wenn Sie die Klasse mit Großbuchstaben nennen, die diese

myClazz mc 

Welche myClazz Methode

+0

Ich verstehe, dass eine Menge passiert unter der Haube, aber ich folge nicht Ihrer Erklärung, warum es myClazz –

+0

nicht anrufen kann ... und Aber es funktioniert, wenn es MyClazz heißt –

+0

Ich denke, Sie gehen davon aus, dass ich nicht alle Verweise auf MyClazz umbenannt habe: MyClazz mc = ['123', 'Jahg'] –

Verwandte Themen