繁体   English   中英

我如何确定泛型是否是Java中的类的instanceof?

[英]How do I find out if generic is instanceof a class in 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>) 
            {
               ...
            }                    
        }

由于类型擦除,您无法进行这种类型的检查:常规信息<Aircraft>将在运行时丢失。

但是,您可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM