gpt4 book ai didi

grails - hasProperty 返回 null

转载 作者:行者123 更新时间:2023-12-02 14:12:15 26 4
gpt4 key购买 nike

我正在尝试确定 Groovy(实际上是 Grails 域)类是否具有具有 hasProperty 方法的属性。它总是返回空值。 getProperty 找到这个。这两种方法有什么区别?

Groovy 有 hasProperty 的 javadoc,但一点都不清楚。

Returns true of the implementing MetaClass has a property of the given name

Note that this method will only return true for realised properties and does not take into account implementation of getProperty or propertyMissing

这是 groovy 元协议(protocol)错误吗?

来自 grails 2.2.1 的 Groovy 2.0.7。

谢谢!

最佳答案

hasProperty 标识绑定(bind)到对象的元类的类属性,而 getProperty 可以是非常任意的:您可以编写一个方法来返回任何您想要的。 hasProperty 怎么进入那个?正在执行 getProperty?我觉得有点奇怪。

您可以覆盖 hasProperty,以便它考虑 getProperty 中的任何逻辑:

class Person {
Map otherProperties = [:]
def getProperty(String property) {
otherProperties[property]
}

void setProperty(String prop, value) {
otherProperties[prop] = value
}

boolean hasProperty(String property) {
otherProperties.containsKey(property)
}
}

p = new Person()
p.name = "John"
p.age = 40

assert p.hasProperty('name')
assert p.hasProperty('age')
assert !p.hasProperty('dob')

关于grails - hasProperty 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com