Java 类型集合不是泛型的;无法使用参数<;?对其进行参数化;?扩展E>;

Java 类型集合不是泛型的;无法使用参数<;?对其进行参数化;?扩展E>;,java,eclipse,generics,Java,Eclipse,Generics,我对Eclipse Galileo有一个奇怪的问题。 我将Java1.6设置为我的JRE。在这行代码上 List templates = new ArrayList (); 我在Eclipse的问题列表中看到以下错误: 类型集合不是泛型的;不能使用参数对其进行参数化 我使用Ant构建此项目没有任何问题。 我怎样才能修好它?看起来这是一个Eclipse问题,但由于此错误,我无法从IDE编译/发布我的项目。您要导入什么List?(见此) java.awt.List或java.util.List 因

我对Eclipse Galileo有一个奇怪的问题。
我将Java1.6设置为我的JRE。在这行代码上

List templates = new ArrayList ();
我在Eclipse的问题列表中看到以下错误:

类型集合不是泛型的;不能使用参数对其进行参数化

我使用Ant构建此项目没有任何问题。

我怎样才能修好它?看起来这是一个Eclipse问题,但由于此错误,我无法从IDE编译/发布我的项目。

您要导入什么
List
?(见此)

java.awt.List
java.util.List

因为,正如eclipse恰当地评论的那样,
java.awt.List
没有参数化;)


同时检查

  • :它不得包含对J2SE 1.4.2库的引用
  • :项目属性->Java编译器设置,源代码兼容性5.0或6.0

除此之外,当最新的Eclipse3.1Beta版支持J2SE5时,出现了很多问题,但从那时起这一问题就得到了解决


尝试在您的项目中使用最新的JDK6。

有时会出现eclipse问题,并且
eclipse-clean
加上刷新所有项目会有所帮助

编辑

当您将代码替换为以下内容时,它是否会改变任何内容:

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

java.util.List<Object> templates = new java.util.ArrayList<Object>();
java.util.List templates=new java.util.ArrayList();
一些想法:

  • 检查项目中使用的JRE库(检查包资源管理器)
  • 在eclipse设置中检查已安装的JRE(与ant使用的相同)
  • 注释掉该行,只是为了检查它是否真的是错误原因
  • 从头开始重新键入整行
  • 在新文件夹(测试)中安装新(干净)版本的eclipse

将“JRE系统库…”放在项目、属性、java构建路径、订单和导出的顶部

对于那些将从Google获得的人来说:问题在于cryptix库。当我从java构建路径中删除它时,项目编译成功。

嘿,我删除了这个神秘的库,但它不起作用。但后来我把JRE系统库放在顶部,它就成功了。真奇怪

使java buildpath引用大于或等于java 1.5

或者您尝试添加“importjava.util.List”语句,然后您可以看到

eclipse表示它与其他列表类型冲突

例如,它可能与com.lowagie.xx.xxx.List等冲突,请尝试避免这些导入


声明

你有没有列出你的班级名单?i、 e:

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

    }

}
import java.util.*;
公共类列表{//无法执行此操作,请将其命名为其他名称。
公共静态void main(字符串[]args){
列表l=新的ArrayList();
}
}
使用“导入java.util.List”

而不是默认导入“导入antlr.collections.List;”

并使用JRE5或更高版本对集合API进行通用支持…

例如:

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

}

}
公共类b类
{
私有AClass AClass=新AClass();
公开无效测试()
{
类获取(“测试”);
//返回字符串类
}
}

虽然已经晚了,但仍在回复,这可能对仍面临此问题的其他人有所帮助。 我得到了完全相同的问题。列表与util.List匹配。解决方案是订购库的导出。 如果您正在使用Maven或任何其他库:

在项目->构建路径->配置构建路径->订单和导出中

选中“JRE系统库”应位于“Maven依赖项”之上


这对我有用

尝试删除
导入antlr.collections.List
并单击Ctr+space以使用
java.util

我更改了导入

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


然后它对我起了作用

抓得好。另一方面,我的最爱之一(当我不注意的时候)——它建立在ant的基础上,不抱怨列表,而是抱怨收集。我已经试过了。我还试图删除.metadata文件夹并重新创建一个工作区。您的错误是否在该行号处?如果您执行以下操作,错误出现在哪一行:列出模板;新的ArrayList();不要做第二行的作业,让我知道会发生什么。看起来您有一个来自该错误的自定义集合类,它不是签名:Collection。。。右键单击项目->Java构建路径->订单并导出将JRE系统库[jkd1.6]移动到顶部。为我工作。为我工作是因为以下原因:“import java.util.List;”正在导入一个在泛型之前的列表。找到答案的一种方法是在Eclipse中按住Ctrl键并“左键单击”;如果它打开接口定义不是“公共接口列表扩展集合”的List.class,那么它将导入一个不知道泛型的列表。这对我来说也很有效。问题是,Eclipse Jetty(HTTP服务器)引入了一个名为OSGi基金会的Apache FelixJAR,它包含一个重新打包的JavaUTILIST!天啊!这对我也有用。节省了大量的时间。谢谢
   import java.util.Iterator;