Java: ListA.addAll(ListB) feux de NullPointerException?
Le tre la partie est Capitalisée dans le code, il est également livré dans foreaching. En raison de l'abrégé de la liste, il ne peut pas être initialisé, la déclaration est dans un champ statique. Les listes ont le même type.
import java.util.*;
public class Test
{
public static final List<String> highPrio = Arrays.asList("*","/");
public static List<String> ops;
public static void main(String[] args)
{
//ERROR HERE, why do it throw nullPointer?
ops.addAll(highPrio);
for(String s : ops)
{
System.out.println(s);
}
}
}
Pourquoi pas une nouvelle Liste() dans l'initialisation?
La raison pour ne pas l'initialisation de l'incapacité à utiliser = new List<String>()
. Je ne vois pas une logique ne lui permettant pas. Il doit avoir quelque chose à voir avec des facteurs intrinsèques tels que les données de strucs ou quelque chose d'autre.
Test.java:7: java.util.List is abstract; cannot be instantiated
public static List<String> ops = new List<String>();
Pourquoi liste est une interface?
Je sais que beaucoup de données strucs comme la pile met en œuvre la liste. Mais je ne comprends pas pourquoi la Liste est une interface et pourquoi pas à Table par exemple. - Je voir la liste en tant que structure primitive avec lequel vous pouvez mettre en place d'autres structures. L'Interface est une chose dans laquelle vous pouvez spécifier les exigences pour une structure. Est le primitivenness ou extensivenss raison d'être d'une interface?
OriginalL'auteur hhh | 2010-05-08
Vous devez vous connecter pour publier un commentaire.
Parce que ops est null. Le fait que la Liste est une interface ne signifie pas que vous ne pouvez pas initialiser le champ:
List
est une interface, car il existe de multiples façons de la mettre en œuvre, tout en offrant le même contrat (bien que différentes caractéristiques de performance). Par exemple,ArrayList
est la matrice de dos, tandis queLinkedList
est une liste liée.La liste est une interface, donc il n'a pas de constructeur.
La liste est une interface, mais si vous regardez le code, c'est la création d'une liste de tableaux qui implémente la Liste de l'interface
Ce ne la ligne puis vraiment dire: "List<String> bonjour"? Interface appelée bonjour -- fonctionne avec de la Ficelle?
HH, le nom de l'interface est
List
. Elle est spécialisée avecString
, doncList<String>
.hello
est une variable de référence de typeList<String>
. Mais vous avez vraiment besoin de trouver un bon tutoriel Java.OriginalL'auteur Matthew Flaschen
Vous avez besoin d'instancier la fpo liste.
ou un autre type de liste de votre choix.
OriginalL'auteur Rob Goodwin
Vous n'avez pas initialisé Liste ops;
par exemple
Vous pouvez également faire
OriginalL'auteur lucasweb
ops n'a pas été initialisée encore.
changement déclaration:
OriginalL'auteur KevinS
ops n'est jamais initialisée.
Que vous avez à faire
ops = new ArrayList<String>();
avant de faire le addAll de commande. Sinon, vous appelez à un objet null.La raison pour laquelle vous ne pouvez pas faire
ops = new List<String>
' est parce que la Liste est une interface ne peut pas être initialisé. Liste de tableaux n'est pas un type abstrait et s'étend de la Liste, il est donc approprié dans ce contexte.Résumé types et les interfaces ne peuvent pas être créés comme un objet réel, et ne peut être utilisé pour faire référence à quelque objet concret. Le type de béton doit prolonger le type abstrait ou de l'interface qui vous essayez d'utiliser.
OriginalL'auteur Thomas Sidoti
Vous ajoutez à quoi? Variable
ops
est toujours nulle, tout commes
est nulle dans l'suivantes :OriginalL'auteur fastcodejava
Je pense que votre question est:
Pourquoi je ne peux pas instancier une Liste?
ou Pourquoi suis-je:
Test.java:7: java.util.List is abstract; cannot be instantiated public static List<String> ops = new List<String>();
En Java, Liste de est une interface, qui est, comme vous le dites:
Interface is a thing where you can specify requirements for a structure
- son comme une description de travail qui doit être rempli. Mais vous ne pouvez pas le clip de la description de l'emploi sur le papier et il suffit de l'utiliser pour faire le travail, c'est à dire laList
description du posteis abstract; cannot be instantiated
.Au lieu de cela, vous avez besoin de candidats pour combler le poste décrit par la description de poste pour
List
. Les candidats ("des implémentations concrètes") qui répondent aux exigences pour le travail sontArrayList
,LinkedList
,Vector
, etc. À moins que vous initialisez votreList<String> ops
var à un candidat de faire le travail, vous avez pas un (null
) de le faire réellement le travail (il y en élevant unNullPointerException
.OriginalL'auteur Bert F