2013-04-09 63 views
4

我需要設置JavaBean的某些屬性。我有一個通用的Map<String, String>,其中第一個字符串是屬性的名稱,第二個字符表示它的值。如何在不知道類型的情況下設置屬性(即通過BeanUtils)

現在,如果地圖上看起來是這樣的:

"greeting" : "Hello" 
"cool" : "true" 
"amount" : "42" 

和我的豆這個樣子的制定者:

public void setGreeting(String greeting); 
public void setCool(boolean cool); 
public void setAmount(int amount); 

我需要設置這些屬性統稱,如:

BeanUtils.setProperty(myBean, "amount", myMap.get("amount")); 

以便BeanUtils找到正確的方法來使用並將字符串轉換爲正確的類型。在API文檔中的大多數地方都提到「沒有類型轉換」,但是我在API文檔中發現了很多轉換器,所以我認爲必須有這樣做的方法。

如何讓BeanUtils在不知道類型的情況下找到正確的方法?

+0

你嘗試了嗎?看起來像是有類型轉換http://commons.apache.org/proper/commons-beanutils/api/index.html – BobTheBuilder 2013-04-09 14:04:04

回答

1

javadoc說:

設置的指定屬性值,根據需要,以符合目的地屬性的類型進行類型轉換。

所以它應該自動轉換你的值。

+0

好吧謝謝...我實際上已經在文檔中找到這句話,但不知何故,我讀「執行類型轉換**必須符合......「只是一個完全顛倒含義的單個字符.. – Chris 2013-04-10 06:27:03

1

根據ConvertUtilsBean類的文檔,你可以從StringString[]轉換爲目標類型的類型自動爲:

  • java.lang.BigDecimal(沒有默認值)
  • java.lang.BigInteger(沒有默認值)
  • boolean and java.lang.Boolean(默認爲false)
  • byte and java.lang.Byte(默認爲零)
  • char and java.lang.Character(默認爲空格)
  • java.lang.Class(沒有缺省值)
  • double and java.lang.Double(默認零)
  • float and java.lang.Float(默認零)
  • int and java.lang.Integer(默認零)
  • long and java.lang.Long(默認爲零)
  • short and java.lang.Short(默認爲零)
  • java.lang.String(默認爲null)
  • java.io.File(沒有缺省值)
  • java.net.URL(沒有缺省值)
  • java.sql.Date(沒有缺省值)
  • java.sql.Time(沒有缺省值)
  • java.sql.Timestamp(沒有缺省值)

如果您需要另一個轉換器或替換某人,您可以在Convert Utils Demo中找到一個很好的示例。

相關問題