为什么在常规方法中这两个变量之间存在差异?
def x = ["one":["D7D7D7", "D2D2D2"]]
env.y = ["two":["D7D7D7", "D2D2D2"]]
x.getClass() -> returns java.util.LinkedHashMap
y.getClass() -> returns java.lang.String
我需要将变量设置为env和HashMap :)
答案 0 :(得分:0)
由于您没有告知我们您所处的环境(SoapUi,jenkins,grails等)或实际上没有什么环境,因此实际上没有办法以适当的精度回答您的问题。
话虽如此,举例来说,如何最终实现代码中的行为,可能会出现如下所示的常见现象:
class Env {
private String val
String getY() {
val
}
void setY(String val) {
this.val = val
}
}
def env = new Env()
def x = ["one":["D7D7D7", "D2D2D2"]]
env.y = ["two":["D7D7D7", "D2D2D2"]]
env.with {
println(x.getClass()) // -> returns java.util.LinkedHashMap
println(y.getClass()) // -> returns java.lang.String
}
从这段代码中,我们可以立即看到属性y
(以常规方式表示为getY
和setY
方法,并直接使用env.y
和{{1 }})的类型为env.y = ...
,并且由于我们要分配给变量的类型为String
,因此哈希图会自动转换为行env.y = ["two":["D7D7D7", "D2D2D2"]]
上的字符串。
这是一种机制的示例,该机制可以使像您一样的代码返回其所做的值。像上面提到的那样,如果不对要在其中执行代码的上下文进行适当的猜测,就不能提供足够的信息来给出更完整的答案。