错误信息:Type mismatch: cannot convert from element type Object to int
(但是我的迭代器返回的应该不是Object型)
源代码:
Bag类:
package cn.dbj.oop.Bag;
import java.util.Iterator;
public class Bag implements Iterable {
private item[] a;
private int capacity = 0;
private int max ;
public Bag (int size) {
a = (item[]) new Object[size];
max = size;
}
public item[] getA() {
return a;
}
public Boolean isEmpty (){
if(capacity == 0)
return true;
else return false;
}
public void add (item e) {
if(capacity == max-1){
System.out.println("The bag is FULL!");
return;
}
a[capacity++] = e;
}
public void delete() {
if(capacity == 0){
System.out.println("The bag is EMPTY!");
return;
}
a[capacity--] = null;
}
public int getCapacity() {
return capacity;
}
public Iterator<item> iterator() {
// TODO Auto-generated method stub
return new ReverseBagArray();
}
public class ReverseBagArray implements Iterator<item> {
int size = capacity;
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
return size == 0 ;
}
@Override
public item next() {
// TODO Auto-generated method stub
return a[size];
}
@Override
public void remove() {
// TODO Auto-generated method stub
}
}
}
Test类:
package cn.dbj.oop.Bag;
public class Test {
public static void main(String[] args) {
Bag<Integer> intbag = new Bag<Integer>(10);
intbag.add(2);
intbag.add(45);
intbag.add(3);
System.out.println(intbag.isEmpty());
for(int i : intbag){
System.out.print("This is:");
System.out.println(i);
}
System.out.println("!!!");
}
另:如果我在foreach中用Object i,再强制转型成int,则测试结果是根本没有进入循环,这是为什么呢?