为什么在编译期间无法将javax.xml.stream.XMLEventReader.next()强制转换为XMLEvent?

时间:2012-11-29 15:01:46

标签: 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 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。

注意:我使用了javac 1.7.0_03

1 个答案:

答案 0 :(得分:2)

接口XMLEventReader扩展了原始类型Iterator,而不是参数化类型Iterator<XMLEvent>,因此next()将返回Object。您应该使用nextEvent()代替XMLEvent