Тип Collection не является универсальным; он не может быть параметризован аргументами <? расширяет E> - PullRequest
20 голосов
/ 26 ноября 2009

У меня странная проблема с Eclipse Galileo.
Я установил Java 1.6 в качестве JRE. На этой строке кода

List templates = new ArrayList ();

Я вижу следующую ошибку в списке проблем Eclipse:

Тип Collection не является универсальным; не может быть параметризовано аргументами

У меня нет проблем с созданием этого проекта с помощью Ant.
Как я могу это исправить? Похоже, это проблема Eclipse, но из-за этой ошибки я не могу скомпилировать / опубликовать свой проект из IDE.

Ответы [ 13 ]

38 голосов
/ 26 ноября 2009

Что List вы импортируете? (см. эту ветку от 2006 )

java.awt.List или java.util.List?

Потому что, как удачно комментирует затмение, java.awt.List не параметризован;)


Проверьте также


Кроме этого, было много проблем в 2005 году , когда последняя бета-версия Eclipse 3.1 поддерживала J2SE5, но с тех пор это было исправлено.

Попробуйте использовать в своем проекте последнюю версию JDK6.

21 голосов
/ 09 октября 2012

Уже поздно, но все еще отвечаю, может быть полезно для тех, кто все еще сталкивается с проблемой. Я получал точно такую ​​же проблему. Список был корректным с помощью util.List. Решение состояло в том, чтобы заказать экспорт библиотек. Если вы используете Maven или любые другие библиотеки:

В проекте -> Путь сборки -> Настройка пути сборки -> Порядок и экспорт

Проверьте, что 'Системные библиотеки JRE' должны быть выше 'Maven Dependencies'

Это сработало для меня.

6 голосов
/ 29 июня 2010

Для тех, кто попадет туда из Google: проблема была с библиотекой cryptix. Когда я удалил его из пути сборки Java, проект успешно скомпилирован.

3 голосов
/ 06 сентября 2011

Вы назвали свой список классов? то есть:

import java.util.*;

public class List {   // can't do this, name this something else.

    public static void main(String[] args) {
        List<Integer> l = new ArrayList<Integer>();

    }

}
2 голосов
/ 25 февраля 2011

Эй, я удалил загадочную библиотеку, и она не работала. Но затем я поместил Системную библиотеку JRE на вершину, и это сработало. Очень странно.

1 голос
/ 20 декабря 2013

Я изменил импорт

   import javax.swing.text.html.HTMLDocument.Iterator;

до

   import java.util.Iterator;

тогда у меня это сработало

1 голос
/ 15 июня 2012

например:

public class AClass<T extends Object>
{
 public HashMap<String, String> myMap;
}

если я напишу:

public class BClass
{

private AClass aClass = new AClass();

public void test()
{

aClass.get("test");
//return Object class

}

}

но если я напишу:

public class BClass
{

private AClass<?,?> aClass = new AClass<?,?>();

public void test()
{

aClass.get("test");
//return String class

}

}
1 голос
/ 27 февраля 2012

использовать "import java.util.List"

вместо импорта по умолчанию "import antlr.collections.List;"

и используйте JRE5 или выше для общей поддержки API коллекции ....

1 голос
/ 04 декабря 2009

поместите запись "JRE System Library ..." вверху в проекте, свойствах, пути сборки java, порядке и экспорте

1 голос
/ 26 ноября 2009

Иногда это сбой затмения, и eclipse -clean плюс обновление всех проектов помогает.

Редактировать

Изменяет ли это что-нибудь, когда вы заменяете свой код на:

java.util.List templates = new java.util.ArrayList();

или даже

java.util.List<Object> templates = new java.util.ArrayList<Object>();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...