В андроиде тестово приложения люкс У меня есть класс, как это, где B
является мнением:Как проверить, является ли подкласс экземпляром класса во время выполнения?
public class A extends B {
... etc...
}
теперь у меня есть список просмотр объектов, которые могут содержать A
объектов, но в данном случае я только заботиться, если они» re подклассы или "экземпляры" 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
От Effective C++ от Scott Meyers: «В любое время, когда вы обнаруживаете, что пишете код формы», если объект имеет тип T1, а затем что-то делать, но если он имеет тип T2, тогда сделайте что-нибудь еще », удалите себя. вместо использования переопределенного метода? Или, возможно, что-то вроде шаблона посетителя. – ishmeister
Это для тестового примера, поэтому код на самом деле не находится в производственном приложении, это проверка, чтобы убедиться, что все использует правильные классы :) – iamamused