2015-04-17 13 views
0

Я новичок в groovy и все еще изучаю свой путь. Есть ли простой способ получить значения свойств POJO в groovy с использованием точечной нотации? Например, у меня есть следующий POJO:Простой способ доступа к свойствам POJO в groovy?

public class MyPOJO { 
     protected String name; 
     public String getName() { 
      return name; 
     } 
     public void setName(String name) { 
      this.name = name; 
     } 

} 

В заводной, я хотел бы получить значение поля имени следующим образом:

def doSomething (MyPOJO mpj) { 
    def name = mpj.name 
    // do something 
} 

выше не работает. Я знаю, что я все еще мог использовать Java добытчик и сеттер, но я хотел бы быть в состоянии добраться до точки, где я могу динамически тянуть значения Pojo так:

def doSomething (MyPOJO mpj, String propertyName) { 
    def propertyValue = mpj.'${propertyName}' 
    // do something 
} 

Я пытаюсь избегать использования Java Reflection , Спасибо за помощь!

+1

Можете ли вы объяснить, что не работает для вас? Ваш код работает для меня. –

+2

Именно так должно работать с Groovy - с небольшой коррекцией вам нужно использовать GString (двойные кавычки) при динамическом доступе к свойству 'def propertyValue = mpj." $ {PropertyName} "' – stempler

+0

downvotes, действительно? – cfrick

ответ

0

Michal - извинения ... первый фрагмент кода работал, второй - нет.

стебельщик - это сработало! это грызло меня. исправленный фрагмент:

def doSomething (MyPOJO mpj, String propertyName) { 
    def propertyValue = mpj."${propertyName}" 
    // do something 
} 
+0

, если вы передадите «имя» в качестве значения для параметра propertyName, он работает, в других случаях он будет создавать исключение для попытки получить доступ к отсутствующему свойству. – user1708042

 Смежные вопросы

  • Нет связанных вопросов^_^