Ошибка при создании LinkedList из LInkedLists - PullRequest
5 голосов
/ 01 ноября 2019

Я пытаюсь создать LinkedList из LinkedLists в Java.

Следующий фрагмент кода выдает ошибку. Я использую Java 11 и util.List

Не знаю, почему я получаю эту ошибку ..

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

Это дает следующие ошибки:

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

Какя должен продолжать разрешать это?


Хорошо, просто для проверки я создал фиктивный класс просто для создания LinkedList из LinkedLists. Вот полная программа:

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<>());    
    }
}

Опять эти ошибки:

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

Редактировать: Хорошо, отлично работает, когда я использую import java.util.List и import java.util. связанный список вместо импорта java.util. *

Как указано в комментариях, вероятно, существует некоторая проблема с моим путем сборки

1 Ответ

1 голос
/ 01 ноября 2019

Я попробовал ваш пример, используя java7 и java8, и он выдает мне ту же ошибку, что вы видите для java7, но работает для меня для java8.

Почему это не работает для java7будет иметь дело с ограничениями вывода типов в этой версии компилятора.

Я бы ожидал, что java11 будет работать как минимум так же хорошо, как и java8 (то есть код должен компилироваться с использованием java11). Можете ли вы дважды проверить настройки компилятора? Возможно, вы используете компилятор java11, но, возможно, настроили его для генерации кода с использованием правил java7.

Вот версия кода, которую я тестировал:

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<>() );
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...