如何确定泛型是否是Java中的类的实例?

时间:2013-10-28 18:40:16

标签: java generics

我定义了以下类/子类。

public class Vehicle
{
}

public class Car extends Vehicle
{
}

public class Aircraft extends Vehicle
{
}

现在,我正在尝试遍历车辆记录列表,其中列表可以包含汽车和飞机。但是,我想知道它是否是飞机记录(而不是汽车记录)。编译器在检查实例上告诉我“错误:instanceof的非法泛型类型if(s instanceof Record< Aircraft>)”。我错过了什么?原谅我,多年来我没有使用过java。

        for (Record<? extends Vehicle> s : rs.getResultReadOnly())
        {                    
            if(s instanceof Record<Aircraft>) 
            {
               ...
            }                    
        }

1 个答案:

答案 0 :(得分:4)

由于type erasure,您无法执行此类检查:通用信息<Aircraft>将在运行时丢失。

但是你可以这样做:

if (s.getVehicle() instanceof Aircraft) { 
  ..
}