Допустим, у меня есть классы SubClass1 и SubClass2, которые расширяют SuperClass.Мне нужно хранить все объекты, расширяющие SuperClass, в списке (List list).Теперь я передаю список функции, которая может выяснить, какой подкласс был суперклассом ранее.Эта функция должна затем преобразовать суперкласс обратно в соответствующие подклассы.Например,
for (SuperClass superClass : list) {
if (superClass.getType().equals("SubClass1")
SubClass1 subClass = (SubClass1) superClass;
else if (superClass.getType().equals("SubClass2")
SubClass2 subClass = (SubClass2) superClass;
}
Этот пример приведет к исключению приведения класса.Есть ли простое решение для получения этой функциональности?
РЕДАКТИРОВАТЬ: Как упоминалось в одном из ответов, этот код должен вызвать исключение.Что-то должно быть не так с методом getType () в этом примере.Однако решение с использованием ключевого слова instanceof решает проблему, устраняя необходимость в методе getType ().