Java 如何将someobject.getClass()强制转换为类,而不使用SuppressWarnings(“未选中”)?

Java 如何将someobject.getClass()强制转换为类,而不使用SuppressWarnings(“未选中”)?,java,casting,Java,Casting,我正在尝试使用JAXB用一个方法序列化几个不同的对象: 简化代码: public static void serialize(Object req) { QName qname = ... Class<Object> type = helper(req); Object obj = req; ... JAXBElement elem = new JAXBElement<Object>(qname, type, obj);

我正在尝试使用JAXB用一个方法序列化几个不同的对象:

简化代码:

public static void serialize(Object req) {
    QName qname = ...
    Class<Object> type = helper(req);
    Object obj = req;

    ...

    JAXBElement elem = new JAXBElement<Object>(qname, type, obj);

    ...
}
但这最后一行代码会生成未经检查的强制转换警告。
如何才能正确使用它?

尝试使用以下方法

req.getClass().asSubclass(Object.class);

改用类。另外,这是一个警告,只需使用@suppressWarningUnchecked并继续。也就是说,带有两个p的@SuppressWarnings.Class不起作用,JAXBElement对此抱怨道。另外,我认为Java设计人员不会无缘无故地生成此警告,因此我想让它在没有警告的情况下编译,避免SuppressWarnings。@pjp在某些类中有大量@SuppressWarningUnchecked是正常的,请查看集合框架的源代码,例如:ArrayList本身就已经包含14个。在这种情况下,你无法避免压制。这是一个经常与序列化类型场景相关联的事实。这确实是JAXBElement类定义方式的一个弱点。产生相同的警告:required:class found:class,其中CAP1是一个新类型变量:CAP1从捕获扩展对象?延伸Object@pjp这不是一个警告,看起来像是编译器错误,这是你应该避免的。这是一个警告。我刚把不必要的东西拿走了。
req.getClass().asSubclass(Object.class);