Перебирая членов класса и обновляя значение члена в groovy - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть вопрос, касающийся циклического перебора членов класса и обновления значения члена объекта в 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» на «new value», похоже, что он может найти член, содержащий «hello», но значение то же самое после it.setvalue(), как изменитьзначение члена в объекте правильным образом?

1 Ответ

0 голосов
/ 14 ноября 2018

Изменение свойств не влияет на изменение значения поля.Если вы хотите найти поле, в котором хранится определенное значение, например 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...