Dans un androïde suite de tests d'application que j'ai une classe comme celui-ci où B
est une vue:Comment vérifier si une sous-classe est une instance d'une classe lors de l'exécution?
public class A extends B {
... etc...
}
maintenant j'ai une liste d'objets de vue qui peuvent contenir A
objets, mais dans ce cas, je ne se soucient que si elles re sous-classes ou «instances de» B
. Je voudrais faire quelque chose comme:
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
}
}
Le problème est que lorsque le if
rencontre un objet A
il n'évalue pas à une « instance de B
». Y at-il un moyen de faire isSubclassOf
ou quelque chose?
si le tableau ViewList est null, plantage de votre programme, même l'enregistrement tout ne contribue pas. – Tim
From Effective C++, par Scott Meyers: "Chaque fois que vous vous trouvez en train d'écrire du code" si l'objet est de type T1, alors faites quelque chose, mais si c'est du type T2, faites autre chose ". – ishmeister
C'est pour un cas de test donc le code n'est pas réellement dans l'application de production, c'est pour tester pour s'assurer que les choses utilisent les bonnes classes :) – iamamused