0

我正在尝试将两者StringsNodes放在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. 我希望能够对 a 进行任何不同Objects的处理Stack,并且能够过滤 Stack 上的所有对象以找出它们属于哪个类。谢谢!

4

1 回答 1

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

于 2012-11-09T17:06:46.660 回答