Вы можете сделать оба (с некоторой синтаксической коррекцией)
List<Item> info = new ArrayList<Item>();
Что касается этого комментария:
Я не знаю, может ли интерфейс хранить реальные данные, поскольку нет переменной, просто определения функций.
Интерфейсы не только предоставляют определения функций. Наиболее важно, они определяют тип . info
, объявленный, как указано выше, представляет собой список объектов типа Item
. Эти объекты, безусловно, могут хранить данные.
В качестве примера рассмотрим следующее:
interface Item { ... }
class Folder implements Item { ... }
Item it = new Folder();
Теперь it
относится к экземпляру Folder
, который является Item
.