Groovyと定数
gantで設定を外に出すとして、antプロパティも使えるんだけど、やっぱりGroovyで設定した方が柔軟だよねぇ。でもGroovyって定数は定義できないんだろうか。
final I = 10 I = 2 println I
$ groovy test.groovy 2
groovycでコンパイルしてみると、これってrun()メソッドのローカル変数になっているようだ。考えてみると、finalなローカル変数って、クラスファイル上は情報が残ってなくって、javacレベルでのチェックのみなのか。
クラスにすれば大丈夫みたいだ。
class Path {
static final TMP = '/tmp'
}
Path.TMP = '/home'
println Path.TMP
$ p:/tmp$test.groovy
Caught: java.lang.IllegalAccessException: Can not set static final java.lang.Object field Path.TMP to java.lang.String
at test.run(test.groovy:5)
at test.main(test.groovy)
クラスにしておいて、importというのが無難かな。





