Java 使用Cast和泛型实现泛型方法

Java 使用Cast和泛型实现泛型方法,java,generics,jaxb,Java,Generics,Jaxb,我读了以下帖子: - - 但它并没有完全符合我的要求。 我需要创建一个从字符串中的XML创建类的方法。创建了XSD,我成功地使用JAXB将XML打包/解包到类和类。但这太静态了。下面的代码是实际代码。 public static SaiRenovacao createClassFromString(String string, Class Response) throws JAXBException { SaiRenovacao _return

我读了以下帖子: - -

但它并没有完全符合我的要求。 我需要创建一个从字符串中的XML创建类的方法。创建了XSD,我成功地使用JAXB将XML打包/解包到类和类。但这太静态了。下面的代码是实际代码。

    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 {