java如何在不知道属性类型的情况下设置属性(即通过BeanUtils)
我需要设置JavaBean的一些属性。我有一个泛型Map<String, String>
,其中第一个字符串是属性的名称,第二个字符串表示它的值
现在,如果地图如下所示:
"greeting" : "Hello"
"cool" : "true"
"amount" : "42"
我在bean中的setter如下所示:
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找到正确的方法
# 1 楼答案
报告说:
所以它应该自动转换你的值
# 2 楼答案
根据类^{} 的文档,可以从
String
或String[]
自动转换为目标类型的类型有: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
(默认为空)java.io.File
(无默认值)java.net.URL
(无默认值)java.sql.Date
(无默认值)java.sql.Time
(无默认值)java.sql.Timestamp
(无默认值)如果您需要另一个转换器或更换某人,可以在Convert Utils Demo中找到一个很好的示例