0

我该如何解决这个错误?我尝试了this, and (Article) this, and super.iterable(),但似乎没有任何效果。只会将类型Article添加到此队列中。Java 1.7.0_03。

[javac] C:\cygwin\home\Chloe\Queue.java:26: error: incompatible types
[javac]             for (Article a: (Iterable) this) {
[javac]                             ^
[javac]   required: Article
[javac]   found:    Object

这是源代码。

public class Queue<T> extends ArrayDeque {

public int words() {
    int words;
    for (Article a: (Iterable) this) {
    }
}
}
4

2 回答 2

4

队列的迭代器将返回实例,而不是. 你的循环应该是这样的:T ObjectArticle

public int words() {
    int words;
    for (Object a: this) {
       // do something
    }
}

或者,如果您需要文章队列,请以这种方式声明该类:

public class Queue extends ArrayDeque<Article> {

  // this queue will store Article instances

}
于 2012-08-16T04:33:39.580 回答
2

队列包含对象,它并不意味着知道任何项目是否是Article...

试试这个

for (Object a: this)

或这个

public class Test<T> extends ArrayDeque<T> {

    public int words() {
        int words;
        for (T a : this) {
        }
    }
}
于 2012-08-16T04:33:47.410 回答