'instanceof'的泛型运行时检查

时间:2011-10-01 20:33:03

标签: java generics inheritance types

我有一个名为Node<Value>的对象。对象NodeInternal<Value>NodeLeaf<Value>继承自Node<Value>

我正在尝试使用instanceof测试对象的类型,如下所示:

if (node instanceof NodeInternal)。我没有添加<Value>,因为在运行时,类型被删除。但是,如果<Value>上没有NodeInternal,我会收到以下警告:NodeInternal is a raw type. References to generic type NodeInternal<Value> should be parameterized

在这种情况下我该怎么做?

2 个答案:

答案 0 :(得分:1)

使用无界通配符:

if (node instanceof NodeInternal<?>) 
  node = ((NodeInternal<Value>) node).SE();

答案 1 :(得分:0)