Map使用の際にはgetterメソッドの動きに注意
GIA読書会in関西で知った事その二。
Mapを使用する際には、getterメソッドの動作に注意。
groovyでは、オブジェクトaのgetXxx()メソッドを呼び出す際に
- a.getXxx()
- a.xxx
のいずれの方法でも値を取得できます。
が、オブジェクトaがMapの際には注意が必要。a.xxxの方法では常にnullがかえってくるんだって。しらなかった。
具体的には以下のソースを参考に。
def x = "abc"
assert x.class == String
assert x.getClass() == String
def y = [a:100, b:200]
assert y.class == null
assert y.getClass() == java.util.LinkedHashMap
x.getMetaClass().getA = { 400 }
assert x.a == 400
y.getMetaClass().define{
getA{ 200 }
}
assert y.a == 100
y.getMetaClass().define{
getC{ 400 }
}
assert y.c == null




ディスカッション
コメント一覧
まだ、コメントがありません