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?
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?
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>();
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
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.