作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个泛型类,用于通过 JAXB 进行反序列化/序列化。创建JAXBContext
时必须传入一个类,但是当然对于泛型类,这是事先无法知道的。
所以当我尝试这个时,我当然会得到一个编译错误。
public class ServerSerializing<T>
{
private JAXBContext mJAXBContext = null;
public JAXBContext getJAXBContext()
{
if(mJAXBContext == null)
mJAXBContext = JAXBContext.newInstance(T.class);
return mJAXBContext;
}
}
结果:
Illegal class literal for the type parameter T
那么有没有一种方法可以通过泛型来实现这一点?
最佳答案
不是你想要的方式。这是由于类型删除造成的。在运行时,所有 T
都会转换为 Object
。因此,在您的解决方案中,您始终只创建一个 Object
而不是 T
。解决方案是将 class
实例传递给泛型的构造函数。
public class ServerSerializing<T>
{
private JAXBContext mJAXBContext = null;
private final Class<T> type;
public ServerSerializing(Class<T> type){
this.type = type;
}
public JAXBContext getJAXBContext()
{
if(mJAXBContext == null)
mJAXBContext = JAXBContext.newInstance(type);
return mJAXBContext;
}
}
关于java - 如何获取泛型类的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154047/
我是一名优秀的程序员,十分优秀!