在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
什么的?
如果Viewlist产品阵列为空,那么你的程序崩溃,甚至检查,而没有帮助。 – Tim 2012-04-27 09:44:31
From Effective C++,作者:Scott Meyers:“如果对象是T1类型的话,任何时候你发现你自己都在编写代码”,然后做一些事情,但是如果它是T2类型的,那么做一些其他的事情,“拍打你自己。不是使用重写的方法,而是使用访问者模式 – ishmeister 2010-03-10 11:07:13
这是一个测试用例,所以代码实际上不在生产应用程序中,而是测试以确保事物使用正确的类:) – iamamused 2010-03-11 05:01:16