gpt4 book ai didi

java - 如何获取泛型类的类?

转载 作者:行者123 更新时间:2023-12-01 08:11:13 27 4
gpt4 key购买 nike

我正在尝试创建一个泛型类,用于通过 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/

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