Не удается создать экземпляр списка типов [дубликат]
этот вопрос уже есть ответ здесь:
- как инициализировать объект List в Java? 11 ответов
у меня есть следующий код:
List<Product> product = new List<Product>();
ошибки:
Cannot instantiate the type List<Product>
Product
является объектом в моем проекте EJB. Почему я получаю эту ошибку?
5 ответов:
List
интерфейс. Интерфейсы не могут быть созданы. Только конкретные типы могут быть созданы экземпляры. Вы, вероятно, хотите использоватьArrayList
, который является реализация наList
интерфейс.List<Product> products = new ArrayList<Product>();
список-это интерфейс. Вам нужен определенный класс В конце концов так либо попробуйте
List l = new ArrayList();
или
List l = new LinkedList();
в зависимости от ваших потребностей.
список может быть создан любым классом, реализующим interface.By таким образом, Java обеспечивает нам полиморфное поведение.Смотрите пример ниже
List list = new ArrayList ();
вместо непосредственного создания экземпляра ArrayList я использую Список для ссылки на объект ArrayList, чтобы мы использовали только методы интерфейса списка и не заботились о его фактической реализации.
примеры классов,реализующих список ArrayList,LinkedList, Vector.Вы вероятно, вы хотите создать список в зависимости от ваших требований.
пример: - LinkedList является более полезным, когда вы hve, чтобы сделать ряд инерции или удаления .Arraylist является более производительным, поскольку он поддерживается массивом фиксированного размера, а содержимое массива должно быть изменено путем перемещения или повторного роста массива.
опять же, используя список, мы можем просто изменить наш экземпляр объекта без дальнейшего изменения кода в ваших программах.
предположим, что мы используем
ArrayList<String> value = new ArrayList<String>();
мы можем использовать определенный метод ArrrayList и out код не будет надежным
С помощью
List<String> value = new ArrayList<String>();
мы удостоверяемся, что используем только методы интерфейса списка..и если мы хотим изменить его на LinkedList мы просто должны изменить код : -
List value = new ArrayList ();
- - - - - - ваш код использует методы интерфейса списка.....
value = new LinkedList ();
- - - - - ваш код все еще использует Список методов интерфейса и нам не нужно ничего менять---- и нам не нужно ничего менять в нашем коде дальше
кстати LinkedList также работает Deque, который, очевидно, также вы не можете создать, поскольку это также интерфейс