我正在尝试将Strings
和Nodes
放到Stack
上。我使用NodeList方法item(int)
从Node
获取NodeList
。然后,我将此Node
推送到Stack
。我唯一的问题是我不认为它是Node
,除非我有问题。
当我在getClass()
上调用Node
方法时,它会返回:
class com.sun.org.apache.xerces.internal.dom.DeferredElementImpl
当我在NodeList
(getClass()
)上调用相同的方法时,会返回此信息:
class com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl
两次调用getClass()
方法时,都是在我将其放在Stack
之前。我希望能够将任何不同的Objects
放到Stack
上,并能够过滤堆栈中的所有对象以确定它们属于哪个类。谢谢!
答案 0 :(得分:2)
Node和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 )
之后撰写...但恕我直言,将不同类型混合到一个容器中并不是一个好主意。