在不使用泛型类型的情况下,我有以下工作正常:
public class OC_GuillotinePacker implements Iterable<OC_GuillotinePacker> {
@Override
public Iterator<OC_GuillotinePacker> iterator() {
// code that returns a new Iterator
}
}
这让我可以这样循环:
for (OC_GuillotinePacker gp : packer) {
}
我更新了我的代码,所以我可以通过它的泛型类型来存储对象。现在是这样的:
public class OC_GuillotinePacker<T> implements Iterable<OC_GuillotinePacker<T>> {
@Override
public Iterator<OC_GuillotinePacker<T>> iterator() {
// code that returns a new Iterator
}
}
问题是当我创建一个新的 OC_GuillotinePacker 时,例如:
packer = new OC_GuillotinePacker(0, 0, width, height);
然后我不能再像这样循环了:
for (OC_GuillotinePacker gp : packer) {
}
它给了我一个不兼容的类型警告。需要的是 OC_GuillotinePacker<>,找到的是 java.lang.Object。
是否有可能做到两者皆有可能?所以每个循环都有一个原始的,一个具有通用类型的。