泛型和“instanceof”的使用
一个特定于 Java 中泛型及其与 instanceof
的用法的问题:
对于以下 if 语句: if (((NodeInternal
我需要此转换才能访问 parent
的 NW
。 NW
是 parent
的一个属性,其类型为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我想我先评论了,所以我会很荣幸:)
解释是
parent
实际上是类NodeLeaf
而不是NodeInternal
>。Well, I guess I commented first so I'll do the honors :)
The explanation is that
parent
is in fact of classNodeLeaf
and notNodeInternal
.