循环遍历类成员并更新Groovy中的成员值

时间:2018-11-14 13:34:40

标签: groovy

我有一个关于遍历类成员并在groovy中更新对象的成员值的问题:

class Test {    
    String a
    String b

    Test(String a, String b) {
        this.a = a
        this.b = b
    }

    String toString() {
        return "a is " + a + " b is " + b
    }

}

我想遍历对象成员并更新该成员的值:

class Testing {
    static void main(String[] args) {
        Test test = new Test("hello", "world")
        test.properties.findAll {
            it.value.toString.equals('hello')
        }.each {
            it.setValue("new value")
        }
    }
}

我尝试将“ hello”的值更改为“新值”,看起来它可以找到包含“ hello”的成员,但是在it.setvalue()之后的值相同,如何更改该对象中的成员的正确方式?

1 个答案:

答案 0 :(得分:0)

更改属性不会影响字段值的更改。如果您想找到一个存储特定值的字段(例如hello,并将其更改为其他值,则可以尝试使用在setProperty对象上调用的test方法来完成此操作。

考虑以下示例:

class Testing {
    static void main(String[] args) {
        Test test = new Test("hello", "world")

        test.properties.findAll {
            it.value == 'hello'
        }.each { field, _ ->
            test.setProperty(field as String, "new value")
        }

        println test
    }
}

输出:

a is new value b is world