Élément Java effectif 25 Sélectionnez une liste dans un tableau Première moitié

Choisissez une liste dans un tableau

La différence entre les séquences et les types génériques est

--La séquence est covariante et le type générique est invariant

E, List '' et List <String> sont techniquement connus sous le nom de types non fiables. Intuitivement, les types non représentables sont des types dont la représentation au moment de l'exécution est moins informative que leur représentation au moment de la compilation. Les seuls types paramétrés qui peuvent être incorporés sont des types génériques sans limite tels que Liste `` Et `` Carte . La génération de séquences de type générique sans limite est autorisée, mais rarement utile. Interdire la génération de séquences génériques peut être gênant. Par exemple, les types génériques ne peuvent généralement pas retourner un tableau de leurs types d'élément. Cela signifie également que vous pouvez obtenir des avertissements déroutants lorsque vous utilisez des méthodes d'argument de longueur variable en combinaison avec des types génériques. En effet, chaque fois que vous appelez une méthode d'argument de longueur variable, un tableau est généré pour contenir les paramètres de longueur variable. (Dans le code ci-dessous, args correspond à cela)

static int sum(int... args) {
    int sum = 0;
    for (int arg : args) {
        sum += arg;
    }
    return sum;
}

Si le type d'élément de ce tableau n'est pas reproductible, vous serez averti. Vous ne pouvez pas faire grand-chose à propos d'un avertissement à part le supprimer et éviter de mélanger des génériques et des arguments de longueur variable dans votre API.

Si vous obtenez une erreur de génération de séquence générique, la meilleure solution est généralement d'utiliser le type de collection List <E> plutôt que le type de tableau ```E [] `. Vous pouvez sacrifier certaines performances ou brièveté, mais au lieu de cela, obtenez une meilleure sécurité de type et une meilleure interopérabilité.

Recommended Posts

Élément Java effectif 25 Sélectionnez une liste dans un tableau Première moitié
[Java] Récupère des valeurs de manière aléatoire dans un tableau
Jetez un œil à Kotlin dans une perspective Java efficace
[Java] Conversion d'un tableau à une liste
Tri d'une liste avec un tableau de type int comme élément (Java) (Comparator)
[Java] De deux listes à une liste de tableaux
Créer Scala Seq à partir de Java, faire de Scala Seq une liste Java
A propos de la liste des baies Java
Générer un flux à partir d'un tableau de types primitifs en Java
Obtenir une collection non vide à partir d'un flux facultatif avec java
[Java] Conversion de type de liste / type de tableau
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
[Note] Ce que j'ai appris en six mois grâce à des inexpérimentés (Java)
[Lire Java efficace] Chapitre 2 Item 4 "Forcer l'impossibilité d'immobilisation avec un constructeur privé"
[Note] Ce que j'ai appris en six mois grâce à des inexpérimentés (Java) (3)
Mémo d'apprentissage Java (création d'un tableau)
Trier la liste des objets Java
Exécuter le fichier de commandes à partir de Java
[Java] Déclarer et initialiser un tableau
Accéder à Teradata depuis une application Java
Comment créer un tableau Java
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Je veux ForEach un tableau avec une expression Lambda en Java
[Java] Générez une liste restreinte à partir de plusieurs listes à l'aide de l'API Stream