java泛型方法无参_Java中没有泛型参数的泛型方法

小编典典

public static T fromXml(Class clazz, String xml) {

称为:

Thing thing = fromXml(Thing.class, xml);

或更明确地:

Thing thing = MyClass.fromXml(Thing.class, xml);

更令人困惑的是,您可以拥有既构造泛型类型又具有泛型参数的构造函数。不记得该语法,也从未在愤怒中使用过它(无论如何,最好还是使用静态创建方法)。

强制转换(T)是不安全的,并且您不能编写T.class。因此,将T.class包括在内作为参数(JAXBContext.newInstance确实如此),如果类型错误,则抛出相关异常。

public static T fromXml(Class clazz, String xml) {

try {

JAXBContext context = JAXBContext.newInstance(clazz);

Unmarshaller um = context.createUnmarshaller();

Object obj = um.unmarshal(new StringReader(xml));

try {

return clazz.cast(obj);

} catch (ClassCastException exc) {

throw new RelevantException(

"Expected class "+clazz+

" but was "+obj.getClass()

);

}

} catch (JAXBException exc) {

throw new RelevantException(

"Error unmarshalling XML response",

exc

);

}

}

我相信下一个版本的JAXB(在6u14中)在JAXB类中为此类问题提供了一些便捷方法。

2020-09-18

你可能感兴趣的:(java泛型方法无参)