it-swarm.com.ru

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

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

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

Ошибка:

Cannot instantiate the type List<Product>

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

96
Emanuel

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

List<Product> products = new ArrayList<Product>();
179
Matt Ball

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

16
Mike Samuel

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

List l = new ArrayList();

или же

List l = new LinkedList();

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

14
Mechkov

Список может быть создан любым классом, реализующим интерфейс. Таким образом, 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>(); 

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

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

8
Tech Geek

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

Попробуй это:

NameValuePair[] params = new BasicNameValuePair[] {
        new BasicNameValuePair("param1", param1),
        new BasicNameValuePair("param2", param2),
};
1
pancho.gb.cu