Groovyのオブジェクト指向

Groovy本を読んでいてGroovyのオブジェクト指向機能は変わっていて面白いと思った。例えば以下。

クロージャでインタフェースを実装するらしい。まだきちんと理解できていないが、もう少しGroovyを勉強してみようと思った。


マルチメソッドという仕組みもすばらしい。一見メソッドオーバーロードっぽいが、パターンマッチっぽくもある。以下はChapter7からの引用。

def oracle(Object o) { return 'object' }
def oracle(String o) { return 'string' }

Object x = 1
Object y = 'foo'

assert 'object' == oracle(x)
assert 'string' == oracle(y)

Genericeを使用するとどうなるかは書かれていなかったが、Javaで同じことを実装しようとするとinstanceofで分岐しないといけないらしい。Groovyは、引数の動的型に基づいてメソッドをディスパッチするらしい。やはり新しい言語は面白い。