如何在Java中从字符串自动转换属性值?

如何在Java中从字符串自动转换属性值?,java,properties,Java,Properties,假设我有一个bean,它有许多类型的属性,比如int、String、Date等等。。。当然是所有的原始类型。我想用这些值的字符串表示来填充它,而不需要编写所有的解析代码。。。怎么做?您可以使用String.valueOf()。您可以传递任何需要转换的对象,它将完成其余的工作。请注意,如果传入任何对象,它们将需要实现一个合适的toString方法。像Spring这样的Bean框架可以为您实现这一点。但是,如果您想自己编写,则需要使用反射来查找所需的类型,然后使用正确的转换代码 如果您有这样一个类:

假设我有一个bean,它有许多类型的属性,比如int、String、Date等等。。。当然是所有的原始类型。我想用这些值的字符串表示来填充它,而不需要编写所有的解析代码。。。怎么做?

您可以使用
String.valueOf()
。您可以传递任何需要转换的对象,它将完成其余的工作。请注意,如果传入任何对象,它们将需要实现一个合适的toString方法。

像Spring这样的Bean框架可以为您实现这一点。但是,如果您想自己编写,则需要使用反射来查找所需的类型,然后使用正确的转换代码

如果您有这样一个类:

public class MyBean {
    private int count;

    public void setCount(int count) {
        this.count = count;
    }
}
<beans>
    <bean id="myBean1" class="MyBean">
        <property name="count" value="3"/>
    </bean>
</beans>
以及类似以下的应用程序上下文:

public class MyBean {
    private int count;

    public void setCount(int count) {
        this.count = count;
    }
}
<beans>
    <bean id="myBean1" class="MyBean">
        <property name="count" value="3"/>
    </bean>
</beans>


那么这一切对你来说都应该很好。查看以获取更多信息,示例比文档要好。

如果您试图使用属性文件(即字符串)中的值实例化bean,那么
valueOf(String s)
方法就是您的朋友。所有基元类型包装类(
Short
Integer
Long
Float
Double
Boolean
Character
Byte
String
)都提供了静态工厂方法,称为
valueOf
,使用
String
参数

请注意,
Date
不是一个原始包装器,不属于此类别


如果您感兴趣,我可以发布我编写的bean factory类的代码,该类处理自定义@Property注释以从属性文件创建bean实例。

根据我对您问题的理解,您有一个属性映射,例如:

name: "gotch4"
age: "21"
birthday: "7/21/2011"
您想要创建一个假想的Person对象的实例,它具有:

String getName()
int getAge()
Date getBirthday()

提供了一个很好的Java库来实现这一点。看看

String和Date不是基本类型…Date\Integer\Boolean.parseString不起作用吗?什么样的bean?一个普通的JavaBean,还是一个Springbean?一个JavaBean,我不想写解析代码,我的意思是我不想用parseInt解析日期等来写代码…“我想用这些值的字符串表示来填充它,…”这是一个糟糕的主意!bean应该重新设计以接受实际对象。。。告诉我什么是相关的