Java 类型集合不是泛型的;无法使用参数<;?对其进行参数化;?扩展E>;
我对Eclipse Galileo有一个奇怪的问题。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 因
我将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
声明你有没有列出你的班级名单?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;