groovy中each迭代get方法获取值未空,原因探究。GStringImpl

groovy今天遇到个问题,就是通过在迭代器里面用key或者entryset.key,取值,会取到空对象。

打印这个对象后,发现它本身不是java.lang.String,而是org.codehaus.groovy.runtime.GStringImpl类型。

问下了H,他说这个groovy的字符串有点意思。看下源码之后再分享。


def ss1="value1" ;
def e = new HashMap();
e.put("key1",ss1);
e.each{key,value ->
        println("-------------------------------------------");
        println(e.get("$key"));
        println(e."$key");
        println(e.get("$key".toString()));
        println("$key".getClass().toString());
        println("123$key".getClass().toString());
        println(("123"+"123$key").getClass().toString());
}

输出结果

null
value
value
class org.codehaus.groovy.runtime.GStringImpl
class org.codehaus.groovy.runtime.GStringImpl
class java.lang.String

你可能感兴趣的:(groovy学习笔记)