列表不带参数#another reason

时间:2015-01-07 22:23:27

标签: java arraylist

我为我的班级ArrayList命名,当我写这篇

List< String> list = new ArrayList< String>();

它提醒我,我不能这样做List没有参数

更改类名后不再有问题。

有人知道为什么吗?

2 个答案:

答案 0 :(得分:2)

错误表明您创建的类ArrayList没有参数,因为您没有像在代码List<String> list = new ArrayList<String>();

上使用时那样为其指定参数

<String>之后代码的Arraylist部分就是您的问题。

List<String> list = new ArrayList<String>();
                                 | 
                                 |-here

您的类应该创建为public class ArrayList<T>代码的<T>部分是编译器抱怨的参数。

但即使你这样做,也会在此之后抱怨,因为你的班级应该实现一个List才能工作,但这是另一个问题。

另请阅读Generics

这是基于你在问题上所说的话。如果您实际实现了java.util.ArrayList,@ CommuSoft给出的答案会更好。

答案 1 :(得分:0)

如果使用默认的java.util.ArrayListList<T>肯定会考虑泛型类型参数,则代码有效。请参阅此jdoodle

如果您自己实施ArrayList<T>,则需要提供源代码。在这种情况下,类的签名应该是这样的:

public class ArrayList<T> implements List<T> {
    //...
}

如果您正确实现了ArrayList<T>,那么唯一的问题是Java可能存在消除歧义的问题。在这种情况下,您需要更明确。或者您明确List部分:

import your.ArrayList;
//...
java.util.List<String> list = new ArrayList<String>();

或在ArrayList部分:

import java.util.List;
//...
List<String> list = new your.ArrayList<String>();