gpt4 book ai didi

java - 如何将随机对象放入堆栈而不使对象变成 DeferredElementImpl?

转载 作者:行者123 更新时间:2023-12-02 07:27:44 26 4
gpt4 key购买 nike

我正在尝试将字符串节点放入堆栈中。我使用 NodeList 方法 item(int)NodeList 获取 Node。然后,我将此Node 推送到Stack。我唯一的问题是,除非我有问题,否则我不会将其视为节点。

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

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

当我在 NodeList (getClass()) 上调用相同的方法时,它返回以下内容:

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

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

最佳答案

Node 和 NodeList 是接口(interface)而不是类。

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

关于java - 如何将随机对象放入堆栈而不使对象变成 DeferredElementImpl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13312452/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com