Si marca la API para List
usted notará que dice:
Interface List<E>
Ser un interface
medio no puede ser instanciado (no new List()
es posible).
Si marca ese enlace, encontrará algunos class
que implementan List
:
Todas las clases de implementación conocidas:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Esos pueden ser instanciados. Use sus enlaces para saber más sobre ellos, IE: para saber cuál se adapta mejor a sus necesidades.
Los 3 más utilizados probablemente son:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bonificación:
también puede crear instancias con valores, de una manera más fácil, usando el Arrays
class
siguiente:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Pero tenga en cuenta que no puede agregar más elementos a esa lista, ya que es así fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, usenew ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
No se puede crear una instancia de una interfaz, pero hay pocas implementaciones:
JDK2
JDK7
JDK8
JDK9
Además, hay muchas otras formas proporcionadas por otras bibliotecas como Guava .
fuente
List es una interfaz , no puede crear una instancia de una interfaz, porque la interfaz es una convención, qué métodos deberían tener sus clases. Para crear una instancia, necesita algunas realizaciones (implementaciones) de esa interfaz. Pruebe el siguiente código con implementaciones muy populares de la interfaz List:
o
fuente
Necesitará usar
ArrayList<String>
o tal.List<String>
es una interfazUtilizar este:
fuente
List es una interfaz y no puede inicializar una interfaz. Instanciar una clase de implementación en su lugar.
Me gusta:
fuente
La lista es solo una interfaz, una definición de alguna lista genérica. Debe proporcionar una implementación de esta interfaz de lista. Los dos más comunes son:
ArrayList : una lista implementada sobre una matriz
LinkedList : una lista implementada como una cadena de elementos interconectados
fuente
En la mayoría de los casos, desea simple
ArrayList
: una implementación deList
Antes de la versión 7 de JDK
JDK 7 y posterior puedes usar el operador de diamante
Más información está escrita aquí Documentación de Oracle - Colecciones
fuente
Dependiendo de qué tipo de Lista desea usar, algo como
Debería ponerte en marcha.
List es la interfaz, ArrayList es una implementación de la interfaz List. Puede encontrar más implementaciones que se adapten mejor a sus necesidades leyendo los JavaDocs de la interfaz List .
fuente
Si solo desea crear un elemento inmutable
List<T>
con un solo objeto, puede usar esta API:Más información: docs
fuente
La lista es una interfaz. No puede usar List para inicializarlo.
Estas son algunas de las clases de listas impelementadas,
Puede usar cualquiera de estos según sus requisitos. Estas clases tienen sus propias características.
fuente
Por si acaso, alguien aún se demora en esta pregunta. Porque, veo a uno o dos usuarios nuevos que vuelven a hacer la misma pregunta y todos dicen: `` No , no puedes hacer eso, querida prudencia '' . Además de todas las respuestas dadas aquí, me gustaría proporcionar información adicional. hacer, Lista lista = nueva Lista (); Pero a costa de escribir implementaciones de todos los métodos de Interfaces. La noción no es simplemente List list = new List (); pero
..... y así sucesivamente (No puedo escribir todos los métodos).
Este es un ejemplo de clase anónima . Es correcto cuando alguien dice: No , no puede crear una instancia de una interfaz, y eso es correcto. Pero nunca puede decir : NO PUEDE escribir List list = new List (); pero, evidentemente, puedes hacer eso y es una declaración difícil de hacer que no puedes hacer .
fuente
List
. Más bien, declara una nueva clase que no tiene nombre e implementosList
, y en tiempo de ejecución crea un nuevo objeto de la clase recién declarada.Creamos soyuz-to para simplificar 1 problema: cómo convertir
X
aY
(por ejemplo,String
aInteger
). La construcción de un objeto es también una especie de conversión por lo que tiene una función simple de construirMap
,List
,Set
:Compruébalo: tiene muchas otras características útiles
fuente