我看了帖子: - Very simple Java Dynamic Casting - java: how can i do dynamic casting of a variable from one type to another?
但它并没有完全回答我的要求。 我需要创建一个方法,从String中的XML创建一个类。 XSD已经创建,我使用JAXB成功地将XML编组/解组到Class并返回。但这太静止了。下面的代码是实际代码。
public static SaiRenovacao createClassFromString(String string,
Class Response) throws JAXBException {
SaiRenovacao _return = null;
StringReader reader = new StringReader(string);
JAXBContext jaxbContext = JAXBContext.newInstance(Response);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object temp = unmarshaller.unmarshal(reader);
_return = (SaiRenovacao) temp;
return _return;
}
我想改变这种方法。我需要/希望通过参数'响应'传递一个Class。并且我的代码必须实例化这个类[JAXBContext.newInstance(Response);]并解组并返回unmarshalled类 - 这是在Response中作为参数传递的类 - 给调用者。
编写方式我只能使用SaiRenovacao课程。
如果我将实现更改为I将得到明显的异常,因为我无法解析对类型的响应。但这是我需要做的基本想法。
StringReader reader = new StringReader(string);
JAXBContext jaxbContext = JAXBContext.newInstance(Response);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object temp = unmarshaller.unmarshal(reader);
_return = (SaiRenovacao) temp;
return _return;
}
答案 0 :(得分:1)
尝试类似
的内容return clazz.cast(temp);
将您的方法签名更改为
public static <T> T createClassFromString(String retorno, Class<T> clazz) throws JAXBException {