“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 extends E> 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