4

我需要设置 JavaBean 的一些属性。我有一个泛型Map<String, String>,其中第一个字符串是属性的名称,第二个表示它的值。

现在,如果地图如下所示:

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

我在 bean 中的设置器看起来像这样:

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 在不知道其类型的情况下找到正确的方法?

4

2 回答 2

1

javadoc说:

设置指定的属性值,根据需要执行类型转换以符合目标属性的类型。

所以它应该自动转换你的值。

于 2013-04-09T14:04:59.877 回答
1

根据 class 的文档ConvertUtilsBean,您可以自动从目标类型转换StringString[]目标类型的类型是:

  • java.lang.BigDecimal(无默认值)
  • java.lang.BigInteger(无默认值)
  • boolean and java.lang.Boolean(默认为假)
  • 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中找到一个很好的示例。

于 2013-04-09T14:39:52.227 回答