5 votes

Erreur lors de la création d'une LinkedList de LInkedLists

J'essaie de créer une LinkedList de LinkedLists en Java.

Le segment de code suivant donne une erreur. J'utilise java 11 et util.List.

Je ne sais pas pourquoi j'obtiens cette erreur

N = in.read();
List<List<Integer>> L;
L = new LinkedList<>();
for( i = 0;i<N;i++) L.add(new LinkedList<>());

Il donne les erreurs suivantes :

A.java:25: error: cannot infer type arguments for LinkedList
            L = new LinkedList<>();
                              ^
  reason: cannot use '<>' with non-generic class LinkedList
A.java:26: error: cannot infer type arguments for LinkedList
            for( i = 0;i<N;i++) L.add(new LinkedList<>());
                                                    ^
  reason: cannot use '<>' with non-generic class LinkedList

Comment dois-je procéder pour résoudre ce problème ?


Ok, donc juste pour tester j'ai créé une classe factice juste pour créer une LinkedList de LinkedLists. Voici le programme complet :

import java.util.*;
class Dummy
{
    public static void main(String[] args) 
    {
        List<List<Integer>> L;
        L = new LinkedList<>();
        for(int i = 0;i<10;i++) L.add(new LinkedList<>());    
    }
}

Encore une fois, ces erreurs :

A.java:7: error: cannot infer type arguments for LinkedList
        L = new LinkedList<>();
                          ^
  reason: cannot use '<>' with non-generic class LinkedList
A.java:8: error: cannot infer type arguments for LinkedList
        for(int i = 0;i<10;i++) L.add(new LinkedList<>());    
                                                    ^
  reason: cannot use '<>' with non-generic class LinkedList

Edit : Ok, ça marche bien quand j'utilise import java.util.List et import java.util.linkedList au lieu de import java.util.*.

Comme indiqué dans les commentaires, il y a probablement un problème avec mon chemin de construction.

1voto

tbitonti Points 21

J'ai essayé votre exemple en utilisant java7 et java8, et il me donne la même erreur que vous voyez pour java7, mais fonctionne pour moi pour java8.

La raison pour laquelle cela ne fonctionne pas pour java7 est liée aux limitations de l'inférence de type dans cette version du compilateur.

Je m'attendrais à ce que java11 fonctionne au moins aussi bien que java8 (c'est-à-dire que le code devrait être compilé avec java11). Pouvez-vous vérifier les paramètres de votre compilateur ? Il se peut que vous utilisiez un compilateur java11, mais que vous l'ayez configuré pour générer du code en utilisant les règles de java7.

Voici la version du code que j'ai testée :

import java.util.List;
import java.util.LinkedList;

public class TypeTest {
    private static final int STORAGE_SIZE = 10;

    private static final List<List<Integer>> storage = new LinkedList<>();

    static {
        for ( int elementNo = 0; elementNo < STORAGE_SIZE; elementNo++ ) {
            storage.add( new LinkedList<>() );
        }
    }
}

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