No se puede crear una instancia del tipo List

Tengo el siguiente código:

List product = new List(); 

El error:

 Cannot instantiate the type List 

Product es una entidad en mi proyecto EJB. ¿Por qué estoy recibiendo este error?

List es una interfaz . Las interfaces no pueden ser instanciadas. Solo los tipos concretos pueden ser instanciados. Probablemente desee utilizar una ArrayList , que es una implementación de la interfaz de la List .

 List products = new ArrayList(); 

Use un tipo de lista concreta, por ejemplo, ArrayList lugar de solo List .

List es una interfaz. Necesitas una clase específica al final, así que prueba

 List l = new ArrayList(); 

o

 List l = new LinkedList(); 

Lo que se adapte a tus necesidades

La lista puede ser instanciada por cualquier clase que implemente la interfaz. De esta forma, Java nos proporciona el comportamiento polimórfico. Vea el ejemplo a continuación

List list = new ArrayList ();

En lugar de crear una lista de ArrayList directamente, estoy usando una lista para referirme al objeto ArrayList, de modo que solo estamos usando los métodos de interfaz de lista y no nos importa su implementación real.

Ejemplos de clases que implementan List son ArrayList, LinkedList, Vector. Probablemente desee crear una lista según sus requisitos.

Ejemplo: – LinkedList es más útil cuando tiene que hacer un número de inertes o eliminaciones. El arraylist es más intensivo en rendimiento ya que está respaldado por una matriz de tamaño fijo y los contenidos de la matriz deben cambiarse moviendo o volviendo a crecer la matriz.

De nuevo, al usar una Lista, podemos simplemente cambiar nuestra instanciación de objetos sin cambiar ningún código más en sus progtwigs.

Supongamos que estamos utilizando ArrayList value = new ArrayList();

podemos usar un método específico de ArrrayList y nuestro código no será robusto

Utilizando List value = new ArrayList();

nos aseguramos de que solo usemos los métodos de la interfaz List. Y si queremos cambiarlo a LinkedList, simplemente tenemos que cambiar el código: –

List value = new ArrayList ();

—— su código usa métodos de interfaz de lista …..

value = new LinkedList ();

—– su código todavía usa métodos de interfaz de lista y no tenemos que cambiar nada —- y no tenemos que cambiar nada en nuestro código aún más

Por cierto, LinkedList también funciona con Deque, que obviamente tampoco se puede crear una instancia ya que también es una interfaz

Las interfaces no se pueden instanciar directamente, debe crear instancias de las clases que implementan dichas interfaces.

Prueba esto:

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