如何将随机对象放入堆栈而不将对象变为DeferredElementImpl?

时间:2012-11-09 16:54:20

标签: java class nodelist

我正在尝试将StringsNodes放到Stack上。我使用NodeList方法item(int)Node获取NodeList。然后,我将此Node推送到Stack。我唯一的问题是我不认为它是Node,除非我有问题。

当我在getClass()上调用Node方法时,它会返回:

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

当我在NodeListgetClass())上调用相同的方法时,会返回此信息:

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

两次调用getClass()方法时,都是在我将其放在Stack之前。我希望能够将任何不同的Objects放到Stack上,并能够过滤堆栈中的所有对象以确定它们属于哪个类。谢谢!

1 个答案:

答案 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 )之后撰写...但恕我直言,将不同类型混合到一个容器中并不是一个好主意。