从泛型类型 T 获取“类”对象

2022-09-03 12:27:32

我想创建返回XML文档的对象表示的泛型函数(使用JAXB)。我需要将“类”对象传递给JAXBContext构造函数,但是我如何从T中获取它呢?

public <T> readXmlToObject(String xmlFileName, T  jaxbClass) {
   JAXBContext context = JAXBContext.newInstance(T.class); // T.class - here error, how to get it?
   .......
}

答案 1

而是传递类对象,这很容易。

public <T> T readXmlToObject(String xmlFileName, Class<T>  jaxbClass) {
       JAXBContext context = JAXBContext.newInstance( jaxbClass ); // T.class - here error, how to get it?
       Object o = context.createUnmarshaller().unmarshal( new File( xmlFileName ) );
       return jaxbClass.cast( o );
}

这里的想法是,由于您无法从对象中提取类型参数,因此必须以相反的方式执行此操作:从类开始,然后操作对象以匹配类型参数。


答案 2

不要听别人的话...你可以得到它。

只需将参数类型更改为 :jaxbClassClass<T>

public <T> T readXmlToObject(String xmlFileName, Class<T> jaxbClass) {
   JAXBContext context = JAXBContext.newInstance(jaxbClass);
   .......
}

推荐