2012-11-29 74 views
0

任何人都可以解釋我爲什麼這個代碼不編譯:爲什麼在編譯期間無法將javax.xml.stream.XMLEventReader.next()轉換爲XMLEvent?

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

+0

您可以將一個'Object'強制轉換爲'XMLEvent' - 但您需要真正做到這一點,編寫一個強制轉換表達式。在這裏,你不是在投射,只是想做一個非法的任務。 –

+2

,因爲你需要'nextEvent()'方法,'next()'來自Iterator,它是XMLEventReader的父類 – hoaz

回答

2

接口XMLEventReader擴展了原始類型Iterator,而不是參數化類型Iterator<XMLEvent>,所以next()將返回Object。您應該使用nextEvent(),而不是返回XMLEvent

相關問題