我想创建返回XML文档的Object表示的泛型函数(使用JAXB).我需要将"class"对象传递给JAXBContext构造函数,但是如何从T中获取它?
public <T> readXmlToObject(String xmlFileName, T jaxbClass) {
JAXBContext context = JAXBContext.newInstance(T.class); // T.class - here error, how to get it?
.......
}
Run Code Online (Sandbox Code Playgroud)
biz*_*lop 14
相反,传递类对象,这很容易.
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 );
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是,由于您无法从对象中提取类型参数,因此必须以相反的方式执行:从类开始,然后操作对象以匹配类型参数.
不要听别人的声音......你可以得到它.
只需将jaxbClass参数类型更改为Class<T>:
public <T> T readXmlToObject(String xmlFileName, Class<T> jaxbClass) {
JAXBContext context = JAXBContext.newInstance(jaxbClass);
.......
}
Run Code Online (Sandbox Code Playgroud)