有可能搞清楚吗?
运行时信息应该可用;否则,Java应该无法检测到问题。
这里是片段:
m_jaxbCxt = JAXBContext.newInstance("generated");
m_unMarshaller = m_jaxbCxt.createUnmarshaller();
Model model = (Model)m_unMarshaller.unmarshal(new File(xmlName));
例外:
Exception in thread "main" java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to generated.Model
提前致谢。
答案 0 :(得分:2)
您可以对JAXBIntrospector.getValue(Object)
操作的结果调用unmarshal
。如果有JAXBElement
,这将打开{{1}}。
答案 1 :(得分:1)
您可以在通用Object
中使用该引用,并在运行时使用调试器进行检查。
答案 2 :(得分:0)
如果是出于调试目的,那么检查debbugger中的Object,就像在另一个答案中所说的那样,是好的。
但是,如果您需要在运行时检查对象是否具有给定类型,然后再使用instanceof
运算符:
Object object = m_unMarshaller.unmarshal(new File(xmlName));
Model model;
if(object instanceof Model) {
model = (Model) object;
}