检查列表中的某个对象是否是这种类

时间:2014-06-15 09:45:54

标签: java

我想检查列表中的对象是否是某种类型的类

我希望我的方法类似于

public <T> MyCustomObject get (Class<T>clz){
List<SomeObject> list= getList();

for(SomeObject o : list){

   if o is the same class as clz, or o is a child of clz return it
}


}

并像这样调用方法

MyCustomObject o =  get(MyCustomObjectVeryFarDescendant.class);

我的比较条款会是什么样的?

3 个答案:

答案 0 :(得分:3)

我认为isInstance(Object)是你正在寻找的:

public <T> MyCustomObject get (Class<T>clz){
   List<SomeObjects> list= getList();

   for(SomeObject o : list){
      if (clz.isInstance(o)) {
          return (T) o;
      }
   }
}

答案 1 :(得分:0)

此运算符仅用于检查"object reference variables"。此运算符检查"object reference variable "的类型,如果属于提供的类型,则返回“true”。

if (objectReference instanceof type)

在此语法中,"objectReference"是对象名称,"type"是用于检查其类型的对象类型的名称。运算符检查对象是否属于特定类型(类类型或接口类型)。

例如:

Car c = new Car();
boolean result = c instanceof Car;

这将返回'true'并将'true'存储到布尔变量'result'

要了解有关instanceOf运算符的更多信息,请参阅

What is instanceof operator

instanceof operator

答案 2 :(得分:-1)

你可以简单地做

if(o instanceof MyCustomObjectVeryFarDescendant){
   return o;
}

如果o是MyCustomObjectVeryFarDescendant或其任何子类的实例,它将返回o。