“ArrayList类型不通用”是什么意思?

我是Java的新手,并试图学习程序员可以使用的各种集合。 我在Eclipse中的剪贴簿中导入了“java.util”,并检查了以下代码。

ArrayList list = new ArrayList(); list.add("test1"); list.add("test2"); 

我收到这个输出。

 The type ArrayList is not generic; it cannot be parameterized with arguments  Syntax error, parameterized types are only available if source level is 5.0 The type ArrayList is not generic; it cannot be parameterized with arguments  Syntax error, parameterized types are only available if source level is 5.0 

这个错误是什么意思? 我没有制作通用数组列表; 我创建了一个字符串数组列表。 那么,什么是“源级”?

Eclipse中的Java版本设置为1.4,java中的generics仅在Java 5中引入。

在eclipse中将JDK更改为1.5或更高版本,以解决此问题。

您可以通过Project - > Java Build Path - > Libraries检查JDK

如果在这里您看到它是Java 1.5或更高版本,那么请检查编译器合规性是否设置为5及更高版本。

您可以检查Project - > Java Compiler

编辑:

向Eclipse中添加新的jdk

右键单击Project – > Java Build Path – > Libraries – > Add Libraries – > JRE System Library – > Installed Libraries – > Add – > Standard VM – >提供您的安装位置并按OK

请注意,在已安装的JRE列表中,请确保检查Java 7。

我想到了什么:

  • 检查JDK是否完全符合generics(以便JSE中的ArrayList类实际上是generics类)
  • 检查是否有另一个具有范围优先级的ArrayList并覆盖标准库定义

是的,1.5及以上的问题消失了。 感觉问题并没有完全解决,我加上我的2美分以防任何人遇到这个问题。 这主要是关于这部分问题:

我没有制作通用数组列表; 我创建了一个字符串数组列表。

提到的错误消息:

>类型ArrayList不是通用的 ; 它不能使用参数进行参数化

>语法错误, 参数化类型仅在源级别为5.0时可用

它实际意味着,从Java 1.5开始我们也可以使用Type参数(其中一个用于使用值参数)。 JDK 1.5引入了generics ,它允许我们抽象类型(或参数化类型 )。

类设计者可以对定义中的类型进行通用 。 arrayList实现如下:

 public class ArrayList implements List .... { // Constructor public ArrayList() {...} // Public methods public boolean add(E e) {...} public void add(int index, E element) {...} public boolean addAll(int index, Collection c) {...} public abstract E get(int index) {...} public E remove(int index) {...} ... } 

其中E可以是任何类型,如String或Integer等。因此名称为generic arrayList。

在对象实例化或方法调用期间,用户可以在类型中特定,这在此示例中完成,如下所示:

 ArrayList list = new ArrayList(); 

(在上述情况下,如果我没有错,这是混乱:-))

generics的使用示例(如果需要):

 // Declaring a DAO layer public interface IMasterAbstractDao { public E findById(I id) {...} public void delete(E e) {...} public List findByCriteria(Criterion criterion) {...} } 

其中E是返回的实体类型。 这可以用于系统中定义的所有模型bean ,使其成为通用的。

希望这可以帮助。

参考:Java编程教程 – generics