我有一个遗留类,所有字段都声明为字符串并绑定到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中,即使它是整数 是否有针对此要求的替代解决方案
答案 0 :(得分:1)
您必须使用Integer.valueOf(String s)
将String
解析为Integer
。
Integer i = Integer.valueOf(string);
这不能通过反射完成,你必须写逻辑。
答案 1 :(得分:1)
我正在使用Apache Commons BeanUtils library。它可能会做你需要的一切。如果您遗漏了某些东西,可以添加自己的转换器。
首先,请查看BeanUtils课程。