2012-11-09 58 views
0

我試圖將StringsNodes放到Stack上。我使用NodeList方法item(int)NodeList獲取Node。然後,我把這個Node推到Stack。我唯一的問題是,除非我有什麼問題,否則我不認爲它是Node如何將隨機對象放入堆棧而不會將對象變爲DeferredElementImpl?

當我請NodegetClass()方法和它返回這個:

class com.sun.org.apache.xerces.internal.dom.DeferredElementImpl 

當我調用相同的方法上NodeListgetClass()),它返回這個:

class com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl 

這兩次時我打電話給getClass()的方法,這是之前我把它放在Stack上。我希望能夠將任何不同的Objects放到Stack上,並且能夠通過堆棧中的所有對象進行過濾來確定它們屬於哪個類。謝謝!

+1

向我們展示堆棧的聲明,以及您在堆棧中推送項目以及將其彈出的位置。 – jlordo

+0

在我把它們放到堆棧之前,它說它是同一個類。 –

+0

當您向我們展示相關代碼時,我們可以爲您提供幫助。 – jlordo

回答

2

節點和NodeList是接口沒有類。

instanceof是爲你製作的。

此代碼:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder  db = dbf.newDocumentBuilder(); 
Document    doc = db.parse(new File("build.xml")); 
NodeList    nodes = doc.getElementsByTagName("target"); 
System.err.println(nodes instanceof NodeList); 
System.err.println(nodes.item(0) instanceof Node); 
System.err.println(nodes.item(0) instanceof Element); 

輸出:

true 
true 
true 

你可以寫,後stack.pop()if(var instance of String)if(var instanceof Node) ...但恕我直言這不是一個好主意,不同類型混合成單一容器。

+0

謝謝!有效!!我知道可能有一些關於我不知道的Node和NodeList類。我對這些課程很陌生。 –