Java 使用Cast和泛型实现泛型方法
我读了以下帖子: - - 但它并没有完全符合我的要求。 我需要创建一个从字符串中的XML创建类的方法。创建了XSD,我成功地使用JAXB将XML打包/解包到类和类。但这太静态了。下面的代码是实际代码。Java 使用Cast和泛型实现泛型方法,java,generics,jaxb,Java,Generics,Jaxb,我读了以下帖子: - - 但它并没有完全符合我的要求。 我需要创建一个从字符串中的XML创建类的方法。创建了XSD,我成功地使用JAXB将XML打包/解包到类和类。但这太静态了。下面的代码是实际代码。 public static SaiRenovacao createClassFromString(String string, Class Response) throws JAXBException { SaiRenovacao _return
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;
}
我想改变这个方法。我需要/希望通过参数“Response”传递一个类,我的代码必须实例化这个类[JAXBContext.newInstance(Response);]并将其解组,然后将解组的类(即作为响应参数传递的类)返回给调用方
按照写这篇文章的方式,我只能和SaiRenovacao班合作
如果我将实现更改为,我将得到一个明显的异常,因为我无法解析对类型的响应。但这是我需要做的基本想法
尝试以下方法
并将方法签名更改为
public static T createClassFromString(String returno,Class clazz)抛出JAXBEException{
我想你的意思是clazz.cast(temp);
因为clazz.getClass()
将返回Class.Class
。
public static SaiRenovacao createClassFromString(String retorno,
Class Response) throws JAXBException {
SaiRenovacao _retorno = null;
StringReader reader = new StringReader(retorno);
JAXBContext jaxbContext = JAXBContext.newInstance(Response);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object temp = unmarshaller.unmarshal(reader);
_retorno = (Response) temp;
return _retorno;
}
return clazz.cast(temp);
public static <T> T createClassFromString(String retorno, Class<T> clazz) throws JAXBException {