在 Android 应用程序测试套件中,我有一个这样的类,其中B
是一个视图:
public class A extends B {
... etc...
}
现在我有一个视图对象列表,其中可能包含A
对象,但在这种情况下我只关心它们是否是子类或“实例”B
。我想做这样的事情:
ArrayList<View> viewList = getViews();
Iterator<View> iterator = viewList.iterator();
while (iterator.hasNext() && viewList != null) {
View view = iterator.next();
if (view.getClass().isInstance(B.class)) {
// this is an instance of B
}
}
问题是当if
遇到一个A
对象它不会评估为“实例B
”。有没有办法做到isSubclassOf
或者其他的东西?
您必须仔细阅读此方法的 API。有时你很容易感到困惑。
它是:
if (B.class.isInstance(view))
API 说: 确定是否指定对象 (参数)与所表示的对象赋值兼容这个班 (您调用方法的类对象)
or:
if (B.class.isAssignableFrom(view.getClass()))
API 说:确定此表示的类或接口类对象与由 表示的类或接口相同,或者是其超类或超接口指定类参数
或者(没有反思和推荐的):
if (view instanceof B)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)