如何动态地将字符串转换为其他类型的java

时间:2015-04-16 07:24:57

标签: java

我有一个遗留类,所有字段都声明为字符串并绑定到UI字段,因此它可以接受用户输入。但在某些情况下,用户可以为少数字段输入数字值,这些字段也会存储到字符串中。 现在我需要根据字段对对象进行排序。我正在尝试使用反射使其在整个模块中通用。对于上面的场景,我从前端传递数据类型名称并尝试动态投射如下

private static Object typeCastAs(String type, Object obj){
        Object result = null;
        try{
            Class _Class = Class.forName(type);
            Object obj1  = (Object) obj;
            result = _Class.cast(obj1);
        }
        catch(ClassNotFoundException ignore){
            System.out.println("Catch exception");
        }
        return result;
    }

但是当我尝试将其强制转换为整数时,它会抛出 ClassCastException ,因为实际值存储在String中,即使它是整数 是否有针对此要求的替代解决方案

2 个答案:

答案 0 :(得分:1)

您必须使用Integer.valueOf(String s)String解析为Integer

Integer i = Integer.valueOf(string);

这不能通过反射完成,你必须写逻辑。

答案 1 :(得分:1)

我正在使用Apache Commons BeanUtils library。它可能会做你需要的一切。如果您遗漏了某些东西,可以添加自己的转换器。

首先,请查看BeanUtils课程。