Properties Groovy属性断言失败

Properties Groovy属性断言失败,properties,groovy,assert,Properties,Groovy,Assert,下面是我的groovy文件的内容: def KEY = "a" Properties myProp = new Properties() myProp[KEY] = "b" assert(myProp[KEY] == myProp.getProperty(KEY)) Properties results = new Properties(myProp) assert(results[KEY] == results.getProperty(KEY)) 我希望两个断言都能通过,但只有第一个断言

下面是我的groovy文件的内容:

def KEY = "a"

Properties myProp = new Properties()
myProp[KEY] = "b"
assert(myProp[KEY] == myProp.getProperty(KEY))

Properties results = new Properties(myProp)
assert(results[KEY] == results.getProperty(KEY))
我希望两个断言都能通过,但只有第一个断言通过,第二个断言失败

对此的任何解释都将不胜感激。谢谢

所以,当文档说“创建一个空属性列表”时,它就是这么做的:

println(results)
>>> [:]
查看
getProperty
的功能:

在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键,则会递归地检查默认属性列表及其默认值。如果未找到属性,则该方法返回null

导致结论是
[]
getAt
)没有搜索默认属性列表

我们可以进一步了解Groovy如何实现
getAt

public static <K,V> V getAt(Map<K,V> self, K key) {
    return self.get(key);
}
这是“正确”的行为吗?很可能不是--可能是一个
属性。getAt
就可以了。

所以,当文档说“创建一个空属性列表”时,它就是这样做的:

println(results)
>>> [:]
查看
getProperty
的功能:

在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键,则会递归地检查默认属性列表及其默认值。如果未找到属性,则该方法返回null

导致结论是
[]
getAt
)没有搜索默认属性列表

我们可以进一步了解Groovy如何实现
getAt

public static <K,V> V getAt(Map<K,V> self, K key) {
    return self.get(key);
}

这是“正确”的行为吗?很可能不是--可能是一个
属性。getAt
将符合顺序。

详细解释!谢谢。@Bala没问题;这很有趣。实际上,我会考虑对此提出一个增强请求;我认为这违反了最不出人意料的原则。如果你这样做了,请在这里发表评论——如果我在几天内没有看到任何东西,我可能会自己做,但在我看来,你应该因为发现了它而获得荣誉(如果它还没有被请求,对我来说似乎是一个明显的问题)。@D.Newton我担心,在我提交请求后,我可能没有时间与Groovy开发人员进行跟进。因此,如果您感兴趣,请提交一份增强文件。谢谢详细解释!谢谢。@Bala没问题;这很有趣。实际上,我会考虑对此提出一个增强请求;我认为这违反了最不出人意料的原则。如果你这样做了,请在这里发表评论——如果我在几天内没有看到任何东西,我可能会自己做,但在我看来,你应该因为发现了它而获得荣誉(如果它还没有被请求,对我来说似乎是一个明显的问题)。@D.Newton我担心,在我提交请求后,我可能没有时间与Groovy开发人员进行跟进。因此,如果您感兴趣,请提交一份增强文件。谢谢