我创建了一个通用的 JAXB 序列化类,如下所示:
public class JAXBSerializing<T>
implements IXMLSerializing<T>
{
private final Class<T> mType;
public JAXBSerializing(Class<T> oType)
{
mType = oType;
}
}
现在在我的代码中,当我用“普通”类实例化它时,它工作正常。
IXMLSerializing<String>strser = new JAXBSerializing<String>(String.class);
但是当我尝试使用泛型类时,会出现编译器错误:
MapEntry<String, String>e = new MapEntry<String, String>("Key", "Value");
IXMLSerializing<MapEntry<String, String>>serializer = new JAXBSerializing<MapEntry<String, String>>(MapEntry.class);
我尝试了各种组合,但没有一个有效。
IXMLSerializing<MapEntry<String, String>>serializer = new JAXBSerializing<MapEntry<String, String>>(MapEntry<String, String>.class);
Syntax error on token ">", void expected after this token
或者
IXMLSerializing<MapEntry<String, String>>serializer = new JAXBSerializing<MapEntry<String, String>>(MapEntry.class);
The constructor JAXBSerializing<MapEntry<String,String>>(Class<MapEntry>) is undefined
唯一有效的是当我像这样实例化一个虚拟对象时:
MapEntry<String, String>e = new MapEntry<String, String>("Key", "Value");
IXMLSerializing<MapEntry<String, String>>serializer = new JAXBSerializing<MapEntry<String, String>>((Class<MapEntry<String, String>>) e.getClass());
虽然这可行,但我想知道如何在没有该虚拟对象的情况下正确地将类作为参数传递。即便如此,由于不必要的强制转换,我收到了未经检查的类型警告,尽管对象都是正确的类型。