Se você marcar a API para List
que você notará que diz:
Interface List<E>
Sendo um interface
meio, não pode ser instanciado (não new List()
é possível).
Se você verificar esse link, encontrará alguns class
es que implementam List
:
Todas as classes de implementação conhecidas:
AbstractList
, AbstractSequentialList
, ArrayList
, AttributeList
, CopyOnWriteArrayList
, LinkedList
, RoleList
, RoleUnresolvedList
, Stack
,Vector
Aqueles podem ser instanciados. Use os links deles para saber mais sobre eles, IE: para saber o que melhor se adapta às suas necessidades.
Os três mais usados provavelmente são:
List<String> supplierNames1 = new ArrayList<String>();
List<String> supplierNames2 = new LinkedList<String>();
List<String> supplierNames3 = new Vector<String>();
Bônus:
você também pode instancia-lo com valores, de maneira mais fácil, usando o Arrays
class
seguinte:
List<String> supplierNames = Arrays.asList("sup1", "sup2", "sup3");
System.out.println(supplierNames.get(1));
Mas observe que você não tem permissão para adicionar mais elementos a essa lista, como está fixed-size
.
int[] a = {1,2,3}; System.out.println(Arrays.asList(a)); // [[I@70cdd2]
ArrayList
, use #new ArrayList<>(Arrays.asList("sup1", "sup2", "sup3"))
Não é possível instanciar uma interface, mas existem poucas implementações:
JDK2
JDK7
JDK8
JDK9
Além disso, existem muitas outras maneiras fornecidas por outras bibliotecas como o Guava .
fonte
List é uma interface , você não pode instanciar uma interface, porque interface é uma convenção, quais métodos devem ter suas classes. Para instanciar, você precisa de algumas realizações (implementações) dessa interface. Experimente o código abaixo com implementações muito populares da interface da lista:
ou
fonte
Você precisará usar
ArrayList<String>
ou algo assim.List<String>
é uma interface.Usa isto:
fonte
Lista é uma interface e você não pode inicializar uma interface. Instancie uma classe de implementação.
Gostar:
fonte
Lista é apenas uma interface, uma definição de alguma lista genérica. Você precisa fornecer uma implementação dessa interface de lista. Dois mais comuns são:
ArrayList - uma lista implementada em uma matriz
LinkedList - uma lista implementada como uma cadeia de elementos interconectada
fonte
Na maioria dos casos, você quer simples
ArrayList
- uma implementação deList
Antes do JDK versão 7
JDK 7 e posterior, você pode usar o operador de diamante
Informações adicionais estão escritas aqui Documentação Oracle - Coleções
fonte
Dependendo do tipo de lista que você deseja usar, algo como
você deve ir.
Lista é a interface, ArrayList é uma implementação da interface Lista. Mais implementações que podem atender melhor às suas necessidades podem ser encontradas lendo os JavaDocs da interface List .
fonte
Se você quer apenas criar um imutável
List<T>
com apenas um objeto, pode usar esta API:Mais informações: docs
fonte
Lista é uma interface. Você não pode usar a Lista para inicializá-la.
Estas são algumas das classes impelementadas da Lista,
Você pode usar qualquer um disso conforme sua exigência. Cada uma dessas classes possui seus próprios recursos.
fonte
Apenas no caso, alguém ainda permanece em torno desta questão. Porque, eu vejo um ou dois novos usuários novamente fazendo a mesma pergunta e todos dizendo: Não , você não pode fazer isso, Caro Prudence . Além de todas as respostas aqui, gostaria de fornecer informações adicionais - Sim, você pode realmente fazer, lista lista = new List (); Mas, ao custo de escrever implementações de todos os métodos de interfaces. A noção não é simplesmente List list = new List (); mas
..... e assim por diante (Não é possível escrever todos os métodos.)
Este é um exemplo de classe anônima . Está correto quando alguém afirma: Não , você não pode instanciar uma interface, e isso mesmo. Mas você nunca pode dizer: Você NÃO pode escrever List list = new List (); mas, evidentemente, você pode fazer isso e é uma afirmação difícil de fazer que você não pode fazer .
fonte
List
. Em vez disso, declara uma nova classe que não tem nome e implementa eList
, em tempo de execução, cria um novo objeto da classe recém-declarada.Criamos soyuz-to para simplificar um problema: como converter
X
paraY
(por exemplo,String
paraInteger
). Construindo de um objecto é também uma espécie de conversão por isso, tem uma função simples de construirMap
,List
,Set
:Verifique - ele tem muitos outros recursos úteis
fonte