16. ジョイントコンパイラ
• GroovyとJavaコードが相互依存してい
てもコンパイル可能に
class A {
B b;
}
class B extends A {}
• 内部では、Groovyクラスのスタブ(メ
ソッド本体を削除したもの)を⽣成して
からJavaコンパイラを起動する
• groovycの-jオプションで実⾏
From 1.1・1.5
31. AST変換: @Singleton
@Singleton class Foo {
def hello() { println quot;helloquot; }
}
Foo.instance.hello() // シングルトン参照
a = new Foo() // newでインスタンス⽣成不可
ERROR
java.lang.RuntimeException: Can't
instantiate singleton Foo. Use
Foo.instance
32. AST変換: @Immutable
@Immutable final class Foo {
String x, y
}
a = new Foo(quot;aquot;,quot;bquot;)
a.x = “hoge” 値の変更
ERROR
groovy.lang.ReadOnlyPropertyExcep
tion: Cannot set readonly property:
x