我只是想在一个泛型链表上初始化一个迭代器,就像这样(由于该站点将泛型类型 T 解释为标记,所以泛型类型 T 似乎已被擦除)
public <T> LinkedList<T> sort(LinkedList<T> list){
Iterator<T> iter = new list.iterator();
...
但是我遇到了错误:
"无法解析列表"
出了什么问题?
我只是想在一个泛型链表上初始化一个迭代器,就像这样(由于该站点将泛型类型 T 解释为标记,所以泛型类型 T 似乎已被擦除)
public <T> LinkedList<T> sort(LinkedList<T> list){
Iterator<T> iter = new list.iterator();
...
但是我遇到了错误:
"无法解析列表"
出了什么问题?
删除new
关键字:
Iterator<T> iter = list.iterator();
list
的新对象。因此,您只需调用list.iterator()
(其中,在其内部某个地方,它本身正在执行new Iterator
或类似操作,并将其返回给您)。public <T> LinkedList<T> sort(LinkedList<T> list){
Iterator<T> iter = new list.iterator();
while (iter.hasNext()){
T t = iter.next();
...
}
}
不要这样做:
public <T> LinkedList<T> sort(LinkedList<T> list){
for (T t : list){
...
}
}
更好的方法是根本不要编写那个方法,而是使用
Collections.sort(list);
紧随new运算符后面的单词必须是一个类名。在这里,list.iterator()已经返回了一个对象。因此,在这一点上,new是不必要的。