2013-10-28 40 views
0

我有以下定义的类/子类。如何找出泛型是否是Java中的一个类的实例?

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>) 
      { 
       ... 
      }      
     } 
+0

记录是List的定义,实际类型是该机作为@Nambari说,班上的类型 – avrono

回答

4

你不能做这种类型的,因为type erasure检查:通用信息<Aircraft>将在运行时丢失。

但是你可以做这样的事情:

if (s.getVehicle() instanceof Aircraft) { 
    .. 
} 
相关问题