2
如何製作Groovy ConfigObject的深層副本?我發現我可以使用.clone()創建對象的淺表副本,但是我想要創建一個完整的深層副本。如何製作Groovy ConfigObject的深層副本?
如何製作Groovy ConfigObject的深層副本?我發現我可以使用.clone()創建對象的淺表副本,但是我想要創建一個完整的深層副本。如何製作Groovy ConfigObject的深層副本?
ConfigObject config = new ConfigSlurper().parse originalConf.toProperties()
@ HappyCoder86答案的問題是假設所有配置鍵/值都是字符串。如果某些配置值是解決方案下的對象/閉包(在grails中通用),則無法工作。
下面的解決方案可能是緩慢的,但如果你有其他類型的字符串,然後值會工作
static def deepcopy(ConfigObject orig) {
ConfigObject copy = new ConfigObject()
orig.keySet().each { key ->
def value = orig.get(key)
if (value instanceof ConfigObject) {
value = deepcopy(value)
}
copy.put(key, value)
}
return copy
}