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
ディスカッション
コメント一覧
まだ、コメントがありません