Почему не работает код: List<Object> list = (List<Object>) List<MyOwnObject>();

125
30 января 2018, 09:46

Нужно сделать такой даункастинг:

List<Object> list = (List<Object>) List<MyOwnObject>();

Почему не получается?

Мне нужно создать метод который будет принимать лист любых объектов и сохранять их содержимое (через toString) в файл.

Answer 1

Я правильно понял: вопрос про наследование в дженерик классах? Если да, то в вашем случае код должен выглядеть так:

List<? extends Object> list = new ArrayList<MyOwnObject>();

Поскольку это Object то можно просто

List<?> list = new ArrayList<MyOwnObject>();
Answer 2

List это интерфейс, нельзя создавать объекты от него.

Объекты можно будет создать от классов (или их потомков), которые реализуют этот интерфейс, такие как: ArrayList, LinkedList, Stack, Vector

Кроме того, в примере вопроса нет самого создания объекта, нет оператора new

Правильно будет:

List list = new ArrayList<MyOwnObject>();
// Еще вариант:
List<Object> list = (java.util.List) new ArrayList<MyOwnObject>();

Контейнер без типа (такой как List list) считается контейнером Object. Т.е. List list для java это List<Object> list

READ ALSO
Где и как лучше рисовать спрайты для игр?

Где и как лучше рисовать спрайты для игр?

Вопрос от новичка в программировании: где (как) лучше рисовать спрайты для игр? Для примера: представьте дорогу и машину на нейНа дороге встречаются...

201
программное вращение vector drawable

программное вращение vector drawable

Использую SurfaceView, рисую на Canvas в отдельном потокеНеобходимо получить из ресурса VectorDrawable, задать поворот и нарисовать на Canvas, потом изменить...

166
Что за концепт friend class?

Что за концепт friend class?

Добрый деньПерешел на новую работу, работа заключается в интеграции с системой SAP ERP

208
Почему не работает ajax-запрос в laravel?

Почему не работает ajax-запрос в laravel?

Вот есть обычная форма:

187