2013-07-26 112 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) { 

     } 
    } 

} 
相關問題