如何将字符串值转换为某种具体类型?

时间:2013-07-26 09:35:08

标签: java reflection casting

我有一个字符串值和一个具体类型的类对象。

所以我的问题是如何将字符串值转换为该类型?
看起来唯一可能的方法是做这样的事情:

private Object convertTo(String value, Class type) {
    if(type == long.class || type == Long.class)
        return Long.valueOf(value);
    if(type == int.class || type == Integer.class)
        return Integer.valueOf(value);
    if(type == boolean.class || type == Boolean.class)
        return Boolean.valueOf(value);
    ...
    return value;
}

但那看起来很难看......有没有更好的方法呢?

3 个答案:

答案 0 :(得分:1)

我真正想要的是某种泛型类型转换。对我来说最有效的是来自Spring:

 org.springframework.core.convert.support.DefaultConversionService

答案 1 :(得分:0)

根据你的描述,如果你有:

String var = "variable";
Class<?> type = Class.forName("your_class");// Your type
Object o = type.cast(var);

现在可能会发生三件事:

  • o应为your_class类型
  • 如果var为null,则o将为null或
  • 将抛出ClassCastException

答案 2 :(得分:0)

public class Sample {

    /**
     * @param args
     */
    public static void main(String[] args) {

        List<Class<?>> classList= new ArrayList<Class<?>>();
        classList.add(String.class);
        classList.add(Double.class);
        try {
            Class<?> myClass = Class.forName("java.lang.Double");
            //Object newInstance = myClass.newInstance();           

            for (Object object : classList) {               
                if(myClass.equals(object)){
                    //do what you like here
                    System.out.println(myClass);
                }

            }

        } catch (ClassNotFoundException e) {

        }
    }

}