Eine Skriptsprache, die unter Java ausgeführt wird. Es ist das Ergebnis des Hinzufügens der erforderlichen Funktionen zu Java.
Hello Groovy World
println("HelloWorld");
Versuchen Sie auch GUI (AWT Frame). Unten sehen Sie den Ausführungsbildschirm von Hello Groovy World (AWT).
Beispiel) HelloGroovyWorld(AWT)
/* Hello World (GUI)Skript*/
import java.awt.*;
import java.awt.event.*;
/**
*MainFrame-Klasse
*/
class MainFrame extends Frame
{
def _menuBar;
def _labelBody;
/**
*Konstrukteur
*/
MainFrame() {
/*Titel initialisieren*/
setTitle("Hello World")
/*Menü initialisieren*/
_menuBar = new MenuBar();
def _menu = new Menu("Datei");
def _menuItem = new MenuItem("schließen");
_menuItem.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e) {
closeFrame(e);
}
});
_menu.add(_menuItem);
_menuBar.add(_menu);
setMenuBar(_menuBar);
/*Initialisieren Sie den Anzeigeinhalt im Frame*/
_labelBody = new Label("Hello World");
this.add(_labelBody);
/*Größe initialisieren*/
setSize(new Dimension(300, 200));
}
/*Frame Close Operation*/
def closeFrame(e)
{
this.dispose();
}
}
/*Einstiegspunkt*/
new MainFrame().show();
Referenz: Apache Groovy - Unterschiede mit Java Referenz: Code Zine - Welche Sprache ist Groovy? Einführung in Groovy für Java-Programmierer
Einige der häufig verwendeten Klassenpakete werden standardmäßig importiert, sodass Sie sie verwenden können, ohne sie zu deklarieren.
java.io.*, java.lang.*, java.math.BigDecimal, java.math.BigInteger, java.net.*, java.util.*, groovy.lang.*, groovy.util.* --Multi-Methode (oder Laufzeitversand) ermöglicht es Ihnen, Methoden mit demselben Methodennamen und Rückgabetyp, aber mit unterschiedlichen Argumenttypen zu definieren. Für diese wird die auszuführende Methode entsprechend dem Typ des zum Zeitpunkt der Ausführung angegebenen Arguments ausgewählt. * Ich bin nicht sicher, in welchem Fall es bequem ist.
Sie können den Verschluss verwenden.
Schließer können Argumente annehmen. Das Argument wird implizit durch das formale Argument ** it ** dargestellt. Es kann auch explizit angegeben werden. clodure = {println (" $ {it} wurde bestanden. ");}; Clodure (" test ");
, clodure = {name, age-> println (" $ {name} ist $ {age " } Ich bin alt. ");}; Clodure (" Alice ", 10);
--Closer kann als Argument angegeben werden. Daher kann der Zugriff auf alle Elemente des Arrays ohne Verwendung der Steuerungssyntax einfach beschrieben werden, indem ein Argument wie jede Methode angegeben wird. sum = 0; (1..10) .each {sum + = it}; println (sum);
Closer können auf Variablen der deklarierten Klasse zugreifen. Daher kann die ereignisgesteuerte Operation leicht definiert werden.
Das Initialisierungsformat des Arrays ist unterschiedlich. (Weil {} durch den Abschluss reserviert ist) int [] array = [1,2,3];
Wenn der Zugriffscontroller beim Definieren von Variablen weggelassen wird, wird er als privates Feld erkannt und Getter / Setter wird automatisch definiert. Wenn Sie es als gültiges Paket privat im Paket definieren möchten, beschreiben Sie @PackageScope. (Es ist als privat geschrieben, aber es scheint, dass der Zugriff nicht kontrolliert wird)
Die Methodennamen von Getter / Setter sind "getXXX ()" und "setXXX ()". * Wenn ein Fehler mit einem Methodennamen auftritt, den Sie zum Zeitpunkt der Kompilierung nicht deklariert haben, kann dieses Verhalten die Ursache sein.
--Automatic Resource Management (ARM) kann nicht verwendet werden. Eine gleichwertige Verarbeitung kann unter Verwendung von Verschlüssen verarbeitet werden. Neue Datei ('C: \\ Pfad \\ zu \\ Datei.txt'). eachLine ('Shift-JIS') {println it;}
Das Verhalten anonymer innerer Klassen folgt den Java-Richtlinien, aber das Verhalten ist anders. Weitere Informationen finden Sie in der Dokumentation von Groovy.
In Java 8 definierte Lambda-Ausdrücke können als anonyme innere Klassen erkannt werden, aber Groovy gibt einen Syntaxfehler aus. Verwenden Sie stattdessen einen Verschluss.
Ein in doppelte Anführungszeichen eingeschlossenes Zeichenfolgenliteral wird als Wert vom Typ GString behandelt. --String-Literale in einfachen Anführungszeichen werden als String behandelt, sofern sie nicht ausdrücklich als char deklariert sind. Wenn Sie eine Zeichenfolge mit zwei oder mehr Zeichen als Zeichen umwandeln, wird sie nur mit dem ersten Zeichen als Zeichen behandelt.
Der Datentyp wird als Objekt erkannt und automatisch in einen primitiven Typ usw. eingefangen, sodass er vom Ergebnis der Konvertierungsverarbeitung zur Erweiterung / Verengung abweichen kann.
Das Verhalten des Vergleichsoperators "==" ist in Java ein promiskuitiver Vergleich, in Groovy wird es jedoch durch "a.compareTo (b) == 0" oder "a.equals (b)" ersetzt. Verwenden Sie "a.is (b)", um die Identität zu überprüfen.
Das Verhalten der impliziten Typkonvertierung in Groovy unterscheidet sich von Java. Weitere Informationen finden Sie in der Dokumentation von Groovy.
Zusätzlich gibt es ** als **, ** def **, ** in **, ** Merkmal **. (Reservierter Charakter)
Lose Quellcode-Schreibregeln im Vergleich zu Java (Gegenteil von Strict). Beispielsweise ist der Doppelpunkt am Ende der Zeile nicht erforderlich und der Datentyp muss nicht deklariert werden. Sie können auch Anweisungen schreiben, die keiner Klasse angehören. (Lose Aussage)
Wenn Sie eine Variable mit def deklarieren, wird der entsprechende Typ entsprechend dem der Variablen zugewiesenen Wert dynamisch geändert.
Kartentyp ist verfügbar. map = [" Alice ": 10," Bob ": 20," Charlie ": 30]; println (map [" Alice "]);
In der Steuerungssyntax ist es implizit falsch, wenn das Bewertungsergebnis 0 oder null ist, andernfalls wahr.
Die switch-Anweisung kann durch Auswertung anderer als numerischer Werte in Fälle unterteilt werden.
Das Format der for-Anweisung ist unterschiedlich. for (m in list) {print m.toString ();};
Eine Expando-Funktion (Dynamic Class Definition) wird bereitgestellt. def e = new Expando (); e.msg =" Hallo Welt "; e.show = {println (msg);}; e.show ();
Das Paket java.sql erleichtert das Schreiben der SQL-Abfrageverarbeitung.
Mit Builder können Sie strukturierte Daten wie HTML / XML / Swing einfach beschreiben. import groovy.xml.MarkupBuilder; neuer MarkupBuilder (). html {body {div {mkp.yield ('Hallo Welt')}; div (Stil: 'style.css') {mkp.yield ('Groovy')} }}
Recommended Posts