Не удается создать экземпляр списка типов [дубликат]


этот вопрос уже есть ответ здесь:

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

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

ошибки:

Cannot instantiate the type List<Product>

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

5 89

5 ответов:

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

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

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

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

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, который, очевидно, также вы не можете создать, поскольку это также интерфейс

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

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

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