Невозможно создать экземпляр типа List <Product>

У меня есть следующий код:

List<Product> product = new List<Product>();

Ошибка:

Cannot instantiate the type List<Product>

Product - это Entity в моем проекте EJB. Почему я получаю эту ошибку?

Ответ 1

List - это интерфейс. Интерфейсы не могут быть созданы. Могут быть созданы только конкретные типы. Вероятно, вы захотите использовать ArrayList, который является реализацией интерфейса List.

List<Product> products = new ArrayList<Product>();

Ответ 2

Используйте конкретный тип списка, например. ArrayList вместо List.

Ответ 3

Список - это интерфейс. В конце вам нужен определенный класс, поэтому либо попробуйте

List l = new ArrayList();

или

List l = new LinkedList();

В зависимости от ваших потребностей.

Ответ 4

Список может быть создан любым классом, реализующим интерфейс. Таким образом, Java предоставляет нам полиморфное поведение. См. Пример ниже:

List<String> list = new ArrayList<String>();

Вместо того, чтобы создавать экземпляр ArrayList напрямую, я использую List для ссылки на объект ArrayList, так что мы используем только методы интерфейса List и не заботимся о его реальной реализации.

Примерами классов, реализующих List, являются ArrayList, LinkedList, Vector. Возможно, вы захотите создать список в зависимости от ваших требований.

Пример: - LinkedList более полезен, когда вам нужно выполнить несколько операций инерции или удаления. Arraylist более требователен к производительности, так как он поддерживается массивом фиксированного размера, и содержимое массива необходимо изменять путем его перемещения или перераспределения.

Опять же, используя List, мы можем просто изменить наш экземпляр объекта без дальнейшего изменения кода в ваших программах.

Предположим, мы используем ArrayList<String> value = new ArrayList<String>();

мы можем использовать определенный метод ArrrayList, и наш код не будет надежным

Используя List<String> value = new ArrayList<String>();

мы проверяем, что мы используем только методы интерфейса List... и если мы хотим изменить его на LinkedList, нам просто нужно изменить код:

List<String> value = new ArrayList<String>(); 

------ ваш код использует методы интерфейса List.....

value = new LinkedList<String>(); 

Код -----your по-прежнему использует методы интерфейса List, и нам не нужно менять anything----, и нам не нужно ничего менять в нашем коде далее

Кстати, LinkedList также работает с Deque, который, очевидно, также нельзя создать, поскольку он также является интерфейсом.

Ответ 5

Интерфейсы не могут быть напрямую созданы, вы должны создавать классы, реализующие такие интерфейсы.

Попробуйте следующее:

NameValuePair[] params = new BasicNameValuePair[] {
        new BasicNameValuePair("param1", param1),
        new BasicNameValuePair("param2", param2),
};