Groovy基本

Groovyとは

  • JVMで実行されるスクリプト言語である。
  • 文法はJavaに非常によく似ている。
  • Javaと互換性があり、JavaクラスファイルをそのままGroovyクラスとして使用できる。
  • 2003年に初めて公開され、2015年からApache Software Foundationが管理している。

Groovyの活用

  • GradleスクリプトはGroovyまたはKotlinで書かれるが、Javaプロジェクトでは主にGroovyが使用される。
  • テストコードの作成にも活用される。

Hello World

class HelloWorld {
   static void main(String[] args) {
      println 'Hello World'
   }
}

実行結果:

Hello World

省略可能な構文

ライブラリ追加(Import Statement)

次のオブジェクトは自動的にインポートされるため、省略できる。

import java.lang.* 
import java.util.* 
import java.io.* 
import java.net.* 

import groovy.lang.* 
import groovy.util.* 

import java.math.BigInteger 
import java.math.BigDecimal

セミコロン(Semicolons)

Groovyではセミコロンは必須ではないため、省略できる。

println 'hello';
println 'hello'

メソッド(Parentheses)

Groovyではメソッド呼び出し時に括弧、()を省略できる。

println('hello')
println 'hello'

戻り値の型とreturnキーワード(Return Type and the return Keyword)

Groovyでは戻り値の型を明示する必要がなく、メソッドの最後の行でreturnキーワードを使う必要もない。

def getPi() {
    3.14
}

assert getPi() in BigDecimal
assert getPi() == 3.14

Getters and Setters

GroovyではGetterとSetterを明示的に定義する必要がない。

class Person {
    String firstName
    String lastName
 
    def getName() {
        firstName + ' ' + lastName
    }
 
    static void main(args) {
        def person = new Person()
        person.firstName = 'Kwan Young'
        person.lastName = 'Shin'
        assert person.firstName == 'Kwan Young'
        assert person.lastName == 'Shin'
        println person.getName()
    }
}

アクセス修飾子(Access Modifiers)

Javaでアクセス修飾子を省略した場合、そのパッケージ内でのみアクセス可能になるが、Groovyでは省略された場合はpublicとして認識される。

チェック例外(Checked Exceptions)

JavaではIOExceptionのようなChecked例外を処理するためにtry/catch文で囲む必要があったが、GroovyではChecked例外がRunTimeExceptionとしてラップされるため、try/catch文を適用する必要がない。

出典: https://springsource.tistory.com/85 [Rednics Blog]

データ型推論

Groovyは変数宣言時にデータ型を指定することもできるが、defというキーワードを使用してデータ型を推論、つまり省略できる。

String message = 'hello'
def message = 'hello'

API

文字列(String)

Groovyで文字列を表記する方法には、単一引用符、'、と二重引用符、"、がある。

  • 単一引用符、'

    • 単純な文字列を出力するために使用される。
  • 二重引用符、"

    • 文字列を出力するために使用され、文字列内部で$変数を使って動的な内容を表示できる。
  • 複数行

    • 複数行を使用したい場合は、単一引用符3つで開いて閉じる、''' '''、または二重引用符3つで開いて閉じる、""" """を使用する。

分岐文

def age = 19
def person = (age < 19)? '성인': '청소년'
println("$person입니다.")

参考