如何在运行时从字符串表示创建Java对象

时间:2012-06-18 10:32:44

标签: java reflection beanshell janino

例如,如果我有一个字符串"{1,2,3,4,5}",我想从该字符串中获取一个int []对象。

我看了一下Janino和Beanshell,但似乎无法找到让他们为我做这件事的正确方法。

我正在寻找一种适用于所有类型的通用解决方案 - 不仅仅是整数数组。

3 个答案:

答案 0 :(得分: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 ...

答案 1 :(得分:2)

查看https://stackoverflow.com/a/2605050/1458047

答案提出了几个选择。

答案 2 :(得分:2)

最好使用Regular ExpressionString Array不一定是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]

输出

{{1}}