我需要设置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找到要使用的正确方法并将String转换为正确的类型。在API文档中的大多数地方都说"没有类型转换",但我在API文档中发现了很多转换器,所以我认为一定有一种方法可以做到这一点。
我怎么能让BeanUtils找到正确的方法,而不知道它的类型?
javadoc说:
设置指定的属性值,并根据需要执行类型转换,以符合目标属性的类型。
所以它应该自动转换你的值
根据ConvertUtilsBean
类的文档,可以从String
或String[]
自动转换为目的类型的类型有:
-
java.lang.BigDecimal
(无默认值) -
java.lang.BigInteger
(无默认值) -
boolean and java.lang.Boolean
(默认为false) -
char and java.lang.Character
(默认为空格) -
java.lang.Class
(无默认值) -
int and java.lang.Integer
(默认为零) -
long and java.lang.Long
(默认为零) -
short and java.lang.Short
(默认为0) -
java.lang.String
(默认为null) -
java.io.File
(无默认值) -
java.net.URL
(无默认值) -
java.sql.Date
(无默认值) -
java.sql.Time
(无默认值) -
java.sql.Timestamp
(无默认值)
byte and java.lang.Byte
(默认为0)double and java.lang.Double
(默认为0)float and java.lang.Float
(默认为0)你可以在Convert Utils Demo中找到一个很好的例子,如果你需要另一个转换器或替换某人。
- 注册ConvertUtils