2013-07-26 78 views
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; 
} 

但是这看起来丑陋......有没有什么更好的方式来做到这一点?

+1

显示我们的代码,它是你想要的东西,这样的 HTTP我理解的代码 – morgano

+1

行更好的理解://计算器。 com/questions/8918550/cast-via-reflection-and-class-class-cast –

+1

你的意思是'convert'吗?除了实现的接口之外,不能将任何Java字符串转换为任何东西。 – EJP

回答

0

我真正在寻找的是某种通用类型转换。该工作最适合我的一个是从春:

org.springframework.core.convert.support.DefaultConversionService 
1

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

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

现在3件事情都可能发生:

  • Ø应your_class型
  • 如果var为空,邻会null或
  • 将抛出ClassCastException
+0

有点,_var_保存值,可以说“123”,类型是Long。此代码始终引发ClassCastException。 –

+0

对于这个问题,“123”不能被转换为Long或Integer。这就是为什么我们有像atoi和itoa这样的功能。你的期望是否有效? – rocketboy

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) { 

     } 
    } 

} 
相关问题