我正在寻找一个简单的解决方案。
我有一个xml文件:
<properties>
<property>
<class>java.lang.String</class>
<value>String value...</value>
</property>
<property>
<class>java.lang.Boolean</class>
<value>true</value>
</property>
<!-- ... others java lang wrapper class -->
</properties>
我想做一个动态解析器。
我知道我可以用org.w3c.dom读取xml。*和org.w3c.dom.Node.getTextContent()我可以得到标签的值。
Class<?> clazz = Class.forName(classTextContent);
// How to convert value to specific clazz?
// if/else (clazz)? Does not look a nice answer.
有什么建议吗?
[已编辑]反思:
变量&#34; clazz&#34;是一个java.lang.Class,对吗? 如何将textContent值(在String中)转换为任何包装类型?
Object objectValue = null;
Class<?> clazz = Class.forName(nodeClass.getTextContent());
String value = nodeValue.getTextContent();
if (clazz.equals(Boolean.class) { objectValue = Boolean.valueOf(value) }
valueOf 可能是我可以使用反射调用的通用方法... Integer,Float,Boolean,Long,Double支持 valueOf 。
另一种方式?
答案 0 :(得分:0)
Object object = YourClass.class.getConstructor(new Class<?>[]{}).newInstance();
// if you want to use a constructor, let's say, for YourClass(int name, int id)
Object object = YourClass.class.getConstructor(new Class<?>[]{int.class, int.class}).newInstance(desiredName, desiredId);