为什么javax.xml.stream.XMLEventReader.next()不能在编译时转换为XMLEvent?
谁能解释一下为什么这段代码不能编译:为什么javax.xml.stream.XMLEventReader.next()不能在编译时转换为XMLEvent?,java,xml-parsing,Java,Xml Parsing,谁能解释一下为什么这段代码不能编译: import java.io.FileInputStream; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.events.XMLEvent; public class Test { public static void main(String[] args) throws Excep
import java.io.FileInputStream;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.XMLEvent;
public class Test {
public static void main(String[] args) throws Exception {
XMLEventReader xr = XMLInputFactory.newInstance().createXMLEventReader(new FileInputStream("test.xml"));
XMLEvent e = xr.next();
}
}
输出
Test.java:10: error: incompatible types
XMLEvent e = xr.next();
^
required: XMLEvent
found: Object
1 error
根据API XMLEventReader.next()返回XMLEvent
注意:我使用了JavaC1.7.0_03,接口
XMLEventReader
扩展了原始类型Iterator
,而不是参数化类型Iterator
,因此next()
将返回对象。您应该改为使用nextEvent()
,它确实返回XMLEvent
您可以将对象
强制转换为XMLEvent
——但实际上需要这样做,即编写强制转换表达式。在这里,您不是强制转换,只是试图进行非法赋值。因为您需要nextEvent()
方法,next()
来自迭代器,它是XMLEventReader的父类