-1

我试着在这里和谷歌上四处寻找,但不幸的是什么也没找到。

这是我的代码:

class DeleteLists
{
    public static void main(String[] args)
    {
        TokenAuth auth = new TokenAuth("xxxxx", "xxxxx");
        JKippt jkippt = new JKippt(auth);

            ClipList[] lists = jkippt.getLists();

            for (int i = 0; i <= lists.length - 1; i++)
            {
                if (lists[i].isPrivate() == false);
                {
                    {System.out.println(lists[i].getTitle);
                    jkippt.deleteList(lists[i].getId());
                }
            }
    }
}

当我尝试编译它时,它会输出:

DeleteLists.java:18: error: incompatible types
        ClipList[] lists = jkippt.getLists();
                                  ^
    required: ClipList[]
    found:    Iterator<ClipList>

这很可能是一个非常基本的错误,但我在这里做错了什么?

非常感谢您!伊甸园。

4

5 回答 5

8

此方法返回一个Iterator

Iterator<ClipList> it = jkippt.getLists();
while (it.hasNext()) {
  ClipList clipList = it.next();
  // do stuff with clipList
}

Iterator决定从 API 方法(尤其是一个名为的方法)返回 angetLists()是一个奇怪的决定,如果它返回 aList或 a Collection(或至少 a Iterable)会更好。如果是这种情况,您可以像这样使用它:

for (ClipList clipList : jkippt.getLists()) {
  // do stuff
}
于 2013-06-29T14:46:59.857 回答
1

getLists()方法返回一个Iterator元素ClipList。库项目页面中有更多示例:https ://code.google.com/p/jkippt/

免责声明:我是图书馆的作者。

于 2013-07-06T08:53:15.570 回答
0

该方法返回一个迭代器,而不是一个数组。要遍历迭代器的元素,您可以使用 while 循环:

Iterator<ClipList> iter = jkippt.getLists();
while (iter.hasNext()) {
    ClipList list = iter.next();
    ...
}
于 2013-06-29T14:41:16.117 回答
0

你必须使用一个Iterator循环:

for (Iterator<ClipList> i = jkippt.getLists(); i.hasNext(); ) {
    ClipList list = i.next();
    if (!list.isPrivate()) {
        System.out.println(list.getTitle);
        i.remove();
    }
}

请注意,您的代码中有一个错误 - 在您的 之后有一个错误的分号if,这会使if语句具有一个空块。

此外,您的这一行可能会抛出一个ConcurrentModificationException

jkippt.deleteList(list.getId());

所以我将其更改为通过该方法使用迭代器进行删除的正确remove()方法。

还要注意这里对 usingif (!list.isPrivate())而不是 your的更改if (list.isPrivate() == false),这是不必要的混乱。

于 2013-06-29T14:48:14.160 回答
0

如前所述, getLists() 返回一个迭代器。您可以使用以下代码示例将其转换为数组列表:

Iterator<String> lists = jkippt.getLists();
List<String> result = new ArrayList<String>();
while (list.hasNext())
  result.add(list.next());

result是您的数组列表。如果您想将其转换为数组,我建议您访问主题ArrayList to array

于 2013-06-29T14:49:16.133 回答