有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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找到正确的方法


共 (2) 个答案

  1. # 1 楼答案

    报告说:

    Set the specified property value, performing type conversions as required to conform to the type of the destination property.

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

  2. # 2 楼答案

    根据类^{}的文档,可以从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(默认为空)
    • java.io.File(无默认值)
    • java.net.URL(无默认值)
    • java.sql.Date(无默认值)
    • java.sql.Time(无默认值)
    • java.sql.Timestamp(无默认值)

    如果您需要另一个转换器或更换某人,可以在Convert Utils Demo中找到一个很好的示例