У меня есть два объекта A и B. Где B является расширением А.Проверка для экземпляра суб-класса в списке и возвращает объект
и у меня есть список, который может содержать в качестве и Bs
и у меня есть метод, который идет что-то вроде:
B findB()
{
for (int i = 0; i < ABlist.size(); i++)
{
if(ABlist.get(i) instanceof B)
{
return ABlist.get(i);
}
else{return null;}
}
return null;
}
который должен просматривать все объекты в списке и возвращают объект, если он является экземпляром B. Но им получать несовместимый тип потому что A не может быть преобразован в B.
Как был бы лучший способ решить эту проблему?
Вам нужно передать результат 'get (i)'. У вас не должно быть этого 'else'. Вы также должны использовать итератор вместо индексов. –
Кроме того, не возвращайте 'null' в' else', просто удалите 'else' целиком. С предложением @SotiriosDelimanolis этот код вернет непустой экземпляр 'B', если он окажется первым в списке. –
@SotiriosDelimanolis, который сработал, спасибо. –