0

と の両方を に置こうStringsNodesしていStackます。NodeList メソッドを使用してからitem(int)を取得します。次に、これを にプッシュします。私の唯一の問題は、何か問題がない限り、それを認識できないことです。NodeNodeListNodeStackNode

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ありがとう!

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 に答える