Pourquoi je ne peux pas avoir int dans le type de ArrayList?

Je veux déclarer une ArrayList de type entier.

Pourquoi ce qui suit me donne une erreur:

ArrayList list1 = new ArrayList(); 

Mais les travaux suivants:

 ArrayList list1 = new ArrayList(); 

ArrayList peut uniquement référencer des types, pas des primitives. Integer est une classe, pas une primitive.

Lorsque vous déclarez ArrayList list1 = new ArrayList() , vous créez un ArrayList qui stockera le type Integer , pas la primitive int .

Si vous souhaitez en savoir plus sur la différence entre les types primitif et de référence, consultez http://pages.cs.wisc.edu/~hasti/cs302/examples/primitiveVsRef.html.

Parce que int est un type primitif . Seuls les types de référence peuvent être utilisés comme parameters génériques.

La réponse courte est que les génériques (comme ArrayList ) n’acceptent pas les types primitifs ( int ), mais uniquement les objects ( Integer ).

En effet, des classes telles que ArrayList sont implémentées en utilisant des objects. Comme chaque classe hérite de Object, le compilateur peut simplement twigr d’autres classes. Mais les types primitifs (comme int ) n’héritent pas de Object, car ils ne sont pas des classes. Ainsi, Sun / Oracle a créé la classe Integer pour aider à cela.

Donc, en bref: int n’est pas un Object .

int est un type de données primitif mais Integer est une classe, donc un tableau arrayList ne peut prendre que des types de référence comme paramètre non du type primitif

int est un primitive . Ce n’est pas un Object .

Reportez-vous à ce lien pour plus de détails.

Toutes les réponses ci-dessus expliquent pourquoi, mais la racine de cette question est la boxe automatique et le déballage automatique des types de données primitifs. Ce problème est déjà résolu par IntBuffer ou ChadBuffer ou vous nommez le type primitif déjà présent dans le dossier nio. La prochaine fois si vous voulez utiliser une primitive ArrayList, n’utilisez pas List, mais utilisez IntBuffer.

int n’est pas un object et donc si type de liste est int, les implémentations de la liste ne peuvent pas être effectuées.