Index > PropertyMissing の利用 (Groovy)
Mon, February 1, 2010

PropertyMissing の利用 (Groovy)

Map で key,value を設定したり呼び出したりしたい。 このとき通常であれば、以下のように使う。

def map = [:]
map.put( 'foo','bar' )
assert map.get('foo') == 'bar'

しかし、Groovyではもっと直感的にコードが書ける。 以下のように...

def map = [:]
map.foo = 'bar'
assert map.foo == 'bar'

自前のクラスでも使いたい場合→ PropertyMissingを使う

java.util.HashMap 等から継承したクラスを使えば、直感的な記述方法を使用できるのだが、 諸事情により java.util.HashMap 等を継承しないクラスでこの機能を使うには、 PropertyMissingを使えばよい。

詳しくはこちらを http://groovy.codehaus.org/Using+methodMissing+and+propertyMissing

class MyMap {
    def map = [:]
    def propertyMissing(String name) { map[name] }
    def propertyMissing(String name, value) { map[name] = value }
}


def map = new MyMap()
map.foo = 'bar'
assert map.foo == 'bar'

この例では、MyMapクラス内の map へ値を渡したり、mapから値を取り出したりしているだけだが、 そうではなく、 データベースへのsave,loadの記述を書いておくなどすると結構便利です。

 Twitter
follow me on Twitter
 Categories