如何在不知道其类型的情况下设置属性(即通过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找到要使用的正确方法并将String转换为正确的类型。在API文档中的大多数地方都说"没有类型转换",但我在API文档中发现了很多转换器,所以我认为一定有一种方法可以做到这一点。

我怎么能让BeanUtils找到正确的方法,而不知道它的类型?

javadoc说:

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

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

根据ConvertUtilsBean类的文档,可以从StringString[]自动转换为目的类型的类型有:

  • java.lang.BigDecimal(无默认值)
  • java.lang.BigInteger(无默认值)
  • boolean and java.lang.Boolean(默认为false)
  • byte and java.lang.Byte(默认为0)
  • char and java.lang.Character(默认为空格)
  • java.lang.Class(无默认值)
  • double and java.lang.Double(默认为0)float and java.lang.Float(默认为0)
  • 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(无默认值)

你可以在Convert Utils Demo中找到一个很好的例子,如果你需要另一个转换器或替换某人。

    注册ConvertUtils

相关内容

  • 没有找到相关文章

最新更新