2012-06-18 26 views
0

例如,如果我有一個字符串"{1,2,3,4,5}"我想從該字符串中獲取一個int []對象。如何在運行時從字符串表示創建Java對象

我看了一下Janino和Beanshell,但似乎無法找到正確的方法讓他們爲我做這件事。

我正在尋找一種通用解決方案,一種適用於所有類型的解決方案 - 不僅是整數數組。

+0

什麼是字符串的格式? JSON? 'toString'? –

+0

只是一個普通的Java字符串,包含諸如「{1,2,3}」,「1」,「Stackoverflow」等等。 – Mellson

+1

這是一個*不同的問題,因爲現在您要求將基本上任意的字符串轉換爲顯然是任意的Java對象。你真的想做什麼? –

回答

2

更好使用Regular Expression。不需要您的StringArray它可以是包含數字的任何String

 String s="{1,2,3,4,5}"; 
     Pattern p = Pattern.compile("-?\\d+"); 
     Matcher m = p.matcher(s); 
     List<Integer> list=new ArrayList<Integer>(); 
     while (m.find()) { 
      Integer num=new Integer(m.group()); 

      list.add(num); 
     } 

     System.out.println(list); 

輸出:

[1, 2, 3, 4, 5] 
+0

是的,你是完全正確的,但我認爲我的方式是爲初學者更容易... – headgrowe

+1

這是真的,但他問這種方法是通用的 – amicngh

2

對我來說看起來像一個解析問題。看看字符串方法:)

的代碼可能看起來像:

String s = "{1,2,3,4,5}" 
String justIntegers = s.substring(1, s.length()-1); 
LinkedList<Integer> l = new LinkedList(); 
for (String string: justIntegers.split(',')) 
l.add(Integer.valuesOf(string)); 
l.toArray(); 

如果您使用字符串發送/保存對象請使用XML或JSON ...

+0

感謝您的努力,如果我所得到的是整型數組,那麼這將起作用。不過,我想要一個通用的解決方案。 – Mellson

+2

爲一個通用的解決方案,使用「XStream」它是一個java-lib將java對象轉換爲xml-strings並返回...每行只有一行代碼...真的很有用 – headgrowe

+0

謝謝,我會盡力試試 – Mellson