gpt4 book ai didi

java - 使用强制类型转换和泛型实现泛型方法

转载 作者:行者123 更新时间:2023-12-01 12:28:21 25 4
gpt4 key购买 nike

我阅读了帖子:-Very simple Java Dynamic Casting-java: how can i do dynamic casting of a variable from one type to another?

但它并没有准确回答我正在寻找的内容。我需要创建一个方法,从字符串内的 XML 创建一个类。 XSD 已创建,我使用 JAXB 成功地将 XML 编码/解码到类并返回。但这太静态了。下面的代码是实际的代码。


public static SaiRenovacao createClassFromString(String string,
Class Response) throws JAXBException {
SaiRenovacao _return = null;<p></p>

<pre><code> StringReader reader = new StringReader(string);
JAXBContext jaxbContext = JAXBContext.newInstance(Response);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object temp = unmarshaller.unmarshal(reader);
_return = (SaiRenovacao) temp;
return _return;
}
</code></pre>

<p></p>

我想改变这个方法。我需要/想要通过参数“Response”传递一个类,并且我的代码必须实例化该类 [JAXBContext.newInstance(Response);] 并将其解码并返回未编码的类 - 即作为 Response 中的参数传递的类 - 到调用者。

按照它的写法,我只能使用 SaiRenovacao 类。

如果我将实现更改为,我将得到一个明显的异常,因为我无法解析对类型的响应。但这是我需要做的基本想法。


public static SaiRenovacao createClassFromString(String retorno,
Class Response) throws JAXBException {
SaiRenovacao _retorno = null;<p></p>

<pre><code> StringReader reader = new StringReader(retorno);
JAXBContext jaxbContext = JAXBContext.newInstance(Response);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Object temp = unmarshaller.unmarshal(reader);
_retorno = (Response) temp;
return _retorno;
}
</code></pre>

<p></p>

最佳答案

尝试类似的事情

return clazz.cast(temp);

并将方法签名更改为

public static <T> T createClassFromString(String retorno, Class<T> clazz) throws JAXBException {

关于java - 使用强制类型转换和泛型实现泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26147646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com