我想检查列表中的对象是否是某种类型的类
我希望我的方法类似于
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);
我的比较条款会是什么样的?
答案 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运算符的更多信息,请参阅
也
答案 2 :(得分:-1)
你可以简单地做
if(o instanceof MyCustomObjectVeryFarDescendant){
return o;
}
如果o是MyCustomObjectVeryFarDescendant
或其任何子类的实例,它将返回o。