2015-07-04 56 views
-3
public static Object createObject(String className, Map params) throws Exception { 
     Object role = ObjectUtils.class.getClassLoader().loadClass(className).newInstance(); 
       if (params != null) { 
      Iterator it = params.entrySet().iterator(); 
        while (it.hasNext()) { 
       Map.Entry entry = (Map.Entry) it.next(); 
       String paraName = (String) entry.getKey(); 
       String paraValue = (String) entry.getValue(); 
       BeanUtils.setProperty(role, paraName, paraValue); 
      } 
     } 
     return role; 
    } 

BeanUtils的所有不同用法是什麼? BeanUtils.setProperty實際上在這裏做了什麼。BeanUtils類的用法

執行上述代碼行後。 角色的價值將如何。 任何人善意解釋這將是非常有益的。

+0

你看了一個'BeanUtils'的javadoc嗎? – hexafraction

+0

我做。但我不明白 –

+0

好吧,然後說清楚哪一部分你不明白,所以我們可以爲你澄清它。 – hexafraction

回答

1

是什麼角色的值時,得到返回它

Object role是一個類名是className的一個實例,通過ObjectUtils的類加載器加載的。反思構建(使用無參數的構造

什麼都是paraName和paraValue裏面的角色做。

的地圖稱爲Params包含一串名稱 - >值映射關係,詳細介紹了屬性要對role設置(這僅僅是與一羣getter和setter的一個目的,設計爲遵守Java Bean specification

通過重複的地圖,我們可以得到所有我們應該設置名稱 - >值映射列表對於每一個,我們稱之爲BeanUtils.setProperty

設置指定的屬性值,進行類型轉換的要求以符合dest的類型財產。

所有這些都會更新字段/成員role的值。

+0

非常感謝..so paraName是否填充了一個名爲paraValue的值?和paraName帶有角色對象的權利? –

+1

@MSIbrahim有點。名爲'params'的地圖指定了要填充的「角色」字段。例如,如果'params'映射了'foo-> 123'和'bar-> 456',這就相當於調用了諸如'role.setFoo(123)'和'role.setBar(456)'之類的調用。 – hexafraction