2015-04-17 45 views
0

我是新來groovy,仍然在學習我的方式。有沒有一種簡單的方法來使用點符號在常規中獲取POJO屬性值?例如,我有以下POJO:簡單的方法來訪問groovy中的POJO屬性?

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

} 

在Groovy中,我想獲得的名稱字段的值如下:

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

以上不起作用。我知道,我仍然可以使用Java getter和setter方法,但是我想能夠得到的地步,我可以動態地拉POJO值,就像這樣:

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

我試圖避免使用Java反射。謝謝您的幫助!

+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

如果您將「name」作爲參數propertyName的值傳遞,則在其他情況下,將嘗試訪問缺少的屬性時會引發異常。 – user1708042

相關問題