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つで開いて閉じる、""" """を使用する。
- 複数行を使用したい場合は、単一引用符3つで開いて閉じる、
分岐文
def age = 19
def person = (age < 19)? '성인': '청소년'
println("$person입니다.")