作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我阅读了帖子:-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/
我是一名优秀的程序员,十分优秀!