我有一个名为
我想使用
这种情况下我该怎么办?
Node<Value>
的对象。对象NodeInternal<Value>
和NodeLeaf<Value>
继承自Node<Value>
。我想使用
instanceof
测试对象的类型,代码如下:if (node instanceof NodeInternal)
。我没有添加<Value>
,因为在运行时,类型会被删除。然而,在NodeInternal
中没有<Value>
,我会收到以下警告:NodeInternal is a raw type. References to generic type NodeInternal<Value> should be parameterized
。这种情况下我该怎么办?
node
变量将具有通用类型参数;确保您的代码在没有类型安全警告的情况下编译。 - ericksonNodeInternal
有一个名为SE()
的方法。所以在if (node instanceof NodeInternal<?>)
中,我有node = ((NodeInternal<?>) node).SE();
这一句。然而,我得到了以下错误:Type mismatch: cannot convert from Node<capture#1-of ?> to Node<Value>
。它要求我将从函数传递给insert(Node<Value>)
的 Node 参数更改为insert(Node<?>)
,但这是错误的建议(会破坏代码)。如果我只想在 Node 是 NodeInternal 时调用某个方法,应该怎么做?在 C++ 中,这个问题要容易得多。 - darkskynode
强制转换为NodeInternal<Value>
而不是NodeInternal<?>
。 - erickson