我编写了自己的java.utils.List实现。现在我想测试它,但是我无法用对象填充我的集合,因为每当我添加任何内容时它都会显示<identifier> expected
:
public static void main(String[] args) {}
MyCollection col = new MyCollection(10);
int[] tab = {1,2,4,5,6};
col.add(tab);
这里的整个代码:
http://paste.pocoo.org/show/291343/
修改
MyCollection<Integer> col = new MyCollection<Integer>(10);
Integer[] tab = {1,2,4,5,6};
col.add(tab);
仍然相同:/
答案 0 :(得分:1)
您尝试添加int[]
作为Collection<Integer>
的项目,仅接受Integer
(或自动装箱int
)项目。这只有在Collection<int[]>
(其中添加的数组才是唯一项目)时才有效。
要将int[]
转换为Collection<Integer>
,您需要循环播放它:
int[] array = { 1, 2, 3, 4, 5 };
Collection<Integer> collection = new ArrayList<Integer>();
for (int item : array) {
collection.add(item);
}
答案 1 :(得分:0)
你错过了你的类型。它是一个泛型类,所以它应该像
MyCollection<Integer> col = new MyCollection<Integer>(10);
答案 2 :(得分:0)
变化:
MyCollection<Integer> col = new MyCollection<Interger>(10);
您需要指定MyCollection的T.
答案 3 :(得分:0)
此处的一般含义不会导致错误,您只需获得警告,因为您添加到列表中的任何对象都将被删除为Object,因此您可以添加任何对象并失去类型安全性。
您已经实例化了一个列表,其成员是单个对象,无论类型如何,但您尝试将数组添加为单个成员。你有几个选择,但我会坚持:
List<Integer> myCollection = new MyCollection<Integer>(10);
myCollection.addAll(Arrays.asList(1, 2, 3, 4, 5, 6));
如果你真的打算有一个数组列表,你可以这样做:
List<Integer[]> myCollection = new MyCollection<Integer[]>(10);
myCollection.add(new Integer[]{1,2,3,4,5,6});
几点说明:
MyCollection
,但它实际上是List的实现,因此除非您计划实际扩展MyList
,否则Collection
之类的名称似乎更合适。List
的重点。您知道java.util.ArrayList
存在吗?