En un conjunto de pruebas de aplicación para Android que tengo una clase como esta, donde B
es una vista:¿Cómo comprobar si una subclase es una instancia de una clase en tiempo de ejecución?
public class A extends B {
... etc...
}
ahora tengo una lista de objetos de vista que pueden contener A
objetos, pero en este caso sólo se preocupan si están re subclases o "instancias de" B
. Me gustaría hacer algo como:
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
}
}
El problema es que cuando el if
se encuentra con un objeto A
que no se evalúa como una "instancia de B
". ¿Hay alguna manera de hacer isSubclassOf
o algo así?
si el array viewlist es nula, entonces se bloquea el programa, incluso el registro de entrada, mientras que no ayuda. – Tim
De Effective C++, por Scott Meyers: "Cada vez que se encuentre escribiendo código de la forma" si el objeto es de tipo T1, luego haga algo, pero si es de tipo T2, luego haga otra cosa, "bótete". No use un método reemplazado en su lugar? O tal vez algo así como el patrón visitante. – ishmeister
Es para un caso de prueba por lo que el código no está realmente en la aplicación de producción, es para comprobar que las cosas estén usando las clases correctas :) – iamamused