Скажите пожалуйста, почему когда я пытаюсь запустить данный пример происходит ошибка. Пример взят с сайта javarush.
Ошибка возникает в строке , там где for в блоке декларации Dancer d (Error:(16, 26) java: incompatible types: java.lang.Object cannot be converted to Dancer)
import java.util.*;
public class Main {
public static void main(String[] args) {
Dancer dancer = new Dancer("Антон", 18);
Dancer breakDanceDancer = new BreakDankDancer("Алексей", 19);// восходящее преобразование к базовому типу
Dancer electricBoogieDancer = new ElectricBoogieDancer("Игорь", 20); // восходящее преобразование к базовому типу
List discotheque = Arrays.asList(dancer, breakDanceDancer, electricBoogieDancer);
for ( Dancer d : discotheque) {
d.dance();// полиморфный вызов метода
}
}
}
Класс Dancer является родителем для breakDanceDancer и electricBoogieDancer.
Скорее всего, проблема в отсутствии дженериков.
Подробнее
По умолчанию(без указывания дженериков) в List хранятся объекты типа Object. Для прохода по листу вы в foreach создаете объект типа Dancer. Но он не знает, что в листе у вас объекты типа Dancer, и считает, что у вас там объекты типа Object. И он выводит ошибку, когда вы пишите Dancer d : discotheque, ему надо Object d : discotheque. Что бы указывать Dancer в foreach, используйте дженерики:
List<Dancer> discotheque = Arrays.asList(dancer, breakDanceDancer, electricBoogieDancer);.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости