我正在使用 JavaPoet api 生成源代码。但是,在某些时候,我从 xml 中获取所需的详细信息,该详细信息是用于创建字段的现成字符串,然后我将字符串保存到 Object,然后我将 object 转换为 FieldSpec,但它给了我异常。是我以错误的方式投射它吗?
public List<FieldSpec> getFieldSpec() throws JDOMException{
try {
fieldSpec = new ArrayList<FieldSpec>();//com.squareup.javapoet.FieldSpec
SAXBuilder builder = new SAXBuilder();
xmlFile = new File("CodeGenerationXML\\SourceCodeFieldsXML\\Fields.xml");
doc = builder.build(xmlFile);
RootXMLFields = doc.getRootElement();
for(Element field:RootXMLFields.getChild("Fields").getChildren()){
Object ElementField = field.getText();// returns FieldSpec.builder(String.class,"str").initializer("$S","Hello").addModifiers(Modifier.PRIVATE, Modifier.FINAL).build()
fieldSpec.add((FieldSpec) ElementField);
}
} catch (Exception e) {
e.printStackTrace();
}
return fieldSpec;
}
public static void main(String arg[]) throws JDOMException{
new AddUpdateFieldsXML().getFieldSpec();
}
例外:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to com.squareup.javapoet.FieldSpec
at RandD.AddUpdateFieldsXML.getFieldSpec(AddUpdateFieldsXML.java:94)
at RandD.AddUpdateFieldsXML.main(AddUpdateFieldsXML.java:103)