121 votes

Impossible d'instancier le type List <Product>

J'ai le code suivant:

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

L'erreur:

 Cannot instantiate the type List<Product>
 

Product est une entité de mon projet EJB. Pourquoi je reçois cette erreur?

229voto

Matt Ball Points 165937

List est une interface . Les interfaces ne peuvent pas être instanciées. Seuls les types concrets peuvent être instanciés. Vous voudrez probablement utiliser ArrayList , qui est une implémentation de l'interface List .

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

21voto

Mike Samuel Points 54712

Utilisez un type de liste concret, par exemple ArrayList au lieu de List .

18voto

Mechkov Points 2603

La liste est une interface. Vous avez besoin d'une classe spécifique à la fin alors essayez soit

 List l = new ArrayList();
 

ou

 List l = new LinkedList();
 

Selon ce qui convient à vos besoins.

10voto

Kumar Abhinav Points 2159

La liste peut être instancié par une classe de mise en œuvre de la interface.By de cette façon,Java fournit nous polymorphes comportement.Voir l'exemple ci-dessous

Liste liste = new ArrayList();

Au lieu d'instancier une liste de tableaux directement,je suis en utilisant une Liste, reportez-vous à la liste de tableaux, d'objets, de sorte que nous sommes en utilisant uniquement la Liste des méthodes d'interface, et ne se soucient pas de sa mise en œuvre effective.

Des exemples de classes de mise en œuvre de la Liste sont ArrayList,LinkedList,Vecteur.Vous souhaiterez probablement créer une Liste en fonction de vos besoins.

Exemple:- une LinkedList est plus utile lorsque vous hve de faire un certain nombre de inertion ou des suppressions .Arraylist est plus exigeantes en performances qu'il est soutenu par un tableau de taille fixe et le contenu du tableau doivent être modifiées par le déplacement ou la repousse du tableau.

Encore une fois,à l'aide d'une Liste, il suffit de modifier notre instanciation d'objet, sans modification du code dans vos programmes.

Supposons que nous utilisons ArrayList<String> value = new ArrayList<String>();

nous pouvons utiliser une méthode spécifique de ArrrayList et le code ne sera pas solide

En utilisant List<String> value = new ArrayList<String>();

nous nous assurons que nous utilisons uniquement de la Liste des méthodes d'interface..et si nous voulons le changer pour un LinkedList il nous suffit de changer le code:

Valeur de la liste = new ArrayList();

------ votre code utilise la Liste des méthodes d'interface.....

valeur = new LinkedList();

-----votre code utilise encore la Liste des méthodes d'interface, et nous n'avons pas à changer quoi que ce soit---- et nous n'avons pas à changer quoi que ce soit dans notre code

Par la voie d'une LinkedList travaille aussi un Deque qui, évidemment, aussi, vous ne peut pas instancier comme il est aussi une interface

2voto

pancho.gb.cu Points 11

Les interfaces ne peuvent pas être directement instanciées, vous devez instancier les classes qui implémentent de telles interfaces.

Essaye ça:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X