【问题标题】:Groovy: How to set a property within setProperty() and avoid infinite recursion?Groovy:如何在 setProperty() 中设置属性并避免无限递归?
【发布时间】:2011-01-05 17:31:23
【问题描述】:

我正在尝试实现一个域类来记录任何属性的值何时更改,但我的setProperty() 调用在设置实际值时会导致无限递归。

这就是现在的样子:

void setProperty(String name, value)
{
    if(name == "modified")
    {
        this.modified = value
        return
    }
    else
    {
        if(this[name]==value)
        {
            return
        }
        this.modified = true
        this[name]=value
    }
}

那么如何在不触发递归setProperty() 调用的情况下访问给定名称的属性?还是有其他方法可以实现我的目标?

【问题讨论】:

    标签: groovy metaprogramming


    【解决方案1】:

    试试:

    this.@"$name" = value
    

    (见http://groovy.codehaus.org/Operators#Operators-Javafield%28.@%29

    【讨论】:

    • this.@name 将访问特定属性,但我需要基于属性名称的通用访问。我已将您的答案更改为我现在必须工作的内容。奇怪的是,我已经找到并尝试了 .@ 运算符。我怀疑 Netbeans 仍在运行以前的代码(那样真的很糟糕)。
    猜你喜欢
    • 2013-11-10
    • 2013-05-25
    • 2020-11-10
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多