泛型和“instanceof”的使用

发布于 2024-12-09 08:45:27 字数 533 浏览 0 评论 0原文

一个特定于 Java 中泛型及其与 instanceof 的用法的问题:

对于以下 if 语句: if (((NodeInternal)parent).NW() instanceof NodeLeaf)

我需要此转换才能访问 parentNWNWparent 的一个属性,其类型为 NodeInternal

我需要检查 NW 持有的引用指针是否是 NodeLeaf 的实例。产生运行时错误:NodeLeaf 无法转换为 NodeInternal。这是因为 leaf 被强制转换为内部,但是,强制转换应该仅适用于 parent 才能访问 NW()

我该如何解决这样的问题?

谢谢

A question specific to generics in Java, and their usage with instanceof:

For the following if-statement: if (((NodeInternal<Value>) parent).NW() instanceof NodeLeaf<?>)

I need this cast in order to access the parent's NW. NW is a property of parent which is of type NodeInternal.

I need to check if the reference pointer held by NW is an instance of NodeLeaf<?>. A runtime error is produced: NodeLeaf cannot be cast to NodeInternal. This is because leaf is cast as an internal, however, the cast should be only for parent to be able to access NW().

How would I fix such a problem?

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

楠木可依 2024-12-16 08:45:27

好吧,我想我先评论了,所以我会很荣幸:)

解释是 parent 实际上是类 NodeLeaf 而不是 NodeInternal >。

Well, I guess I commented first so I'll do the honors :)

The explanation is that parent is in fact of class NodeLeaf and not NodeInternal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文