1

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

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

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;
}

但这看起来很难看......有没有更好的方法来做到这一点?

4

3 回答 3

1

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

 org.springframework.core.convert.support.DefaultConversionService
于 2017-08-17T09:53:40.657 回答
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) {

        }
    }

}
于 2013-07-26T11:14:08.783 回答
0

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

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

现在可能发生 3 件事:

  • o 应该是 your_class 类型
  • 如果 var 为 null,则 o 将为 null 或
  • 将抛出 ClassCastException
于 2013-07-26T10:14:58.360 回答