Slides for JJUG(Japan Java User Group) 2009 Fall BOF.
Talking about groovy history, new features in Groovy 1.6,1.7.
Especially focused on AST Transformations.
48. •
@Singleton
class Foo {
def hello() { println "hello" }
}
Foo.instance.hello() //
a = new Foo() // new
==>
EXCEPTION:
java.lang.RuntimeException: Can't instantiate
singleton Foo. Use Foo.instance
at Foo.<init>(Script1.groovy)
at Script1.run(Script1.groovy:6)
Slide# 32 JJUG CCC 2009 Fall / 2009.10.08
2009 10 10
49. •
@Immutable
final class Foo {
String x, y
}
a = new Foo(x:"a",y:"b")
a.x = "hoge" //
==>
EXCEPTION:
groovy.lang.ReadOnlyPropertyException: Cannot set
readonly property: x for class: Foo
at Foo.setProperty(Script1.groovy)
at Script1.run(Script1.groovy:6)
Slide# 33 JJUG CCC 2009 Fall / 2009.10.08
2009 10 10
50. • /Proxy
import java.util.concurrent.locks.*
class LockableMap {
@Delegate private Map map = [:]
@Delegate private Lock lock = new ReentrantLock ()
}
res = new LockableMap()
res.lock() // Lock
try {
res.a = 0 // Map
} finally {
res.unlock ()
}
assert res instanceof Map
assert res instanceof Lock
Slide# 34 JJUG CCC 2009 Fall / 2009.10.08
http://www.infoq.com/jp/articles/groovy-1-6
2009 10 10