首页 / JAVA / 具有类型混淆的自定义Java迭代器
具有类型混淆的自定义Java迭代器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了具有类型混淆的自定义Java迭代器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1649字,纯文字阅读大概需要3分钟。
内容图文
我有一个泛型类捆绑一个对象和一个订单:
public class OrderedObject<T> {
private int order;
private T object;
public OrderedObject(int order, T object) {
this.order = order;
this.object = object;
}
public int getOrder() {
return order;
}
public T getObject() {
return object;
}
}
我开发了一个Set实现,它存储了OrderedObject< T>.实例并且想要生成Iterator< T>按内置顺序强制执行的顺序枚举:
public class OrderedObjectSet<T> extends AbstractSet<T> implements Set<T> {
Set<OrderedObject<T>> s = new HashSet<OrderedObject<T>>();
public boolean add(int order, T object) {
return s.add(new OrderedObject<T>(order, object));
}
public Iterator<T> iterator() {
return new OrderedObjectSetIterator<T>();
}
public int size() {
return s.size();
}
private class OrderedObjectSetIterator<T> implements Iterator<T> {
private int index;
public boolean hasNext() {
return index < s.size();
}
public T next() {
T object = null;
for (Iterator<OrderedObject<T>> it = s.iterator(); it.hasNext(); ) {
OrderedObject<T> o = it.next();
if (o.getOrder() == index) {
object = o.getObject();
}
}
index++;
return object;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
后一类没有编译,因为Iterator初始化中的类型似乎有些混乱
for (Iterator<OrderedObject<T>> it = s.iterator(); it.hasNext(); ) {
我有什么看法?
解决方法:
混淆是因为内部类OrderedObjectSetIterator引入了一个名为same(T)的泛型类型作为外部类. Eclipse IDE显示警告:
The type parameter T is hiding the type T
所以我猜你不需要引入另一个参数类型,只需使用外部类定义的相同.
基本上,内部类将定义为:
private class OrderedObjectSetIterator implements Iterator<T> {
....
并且迭代器方法如下:
public Iterator<T> iterator() {
return new OrderedObjectSetIterator();
}
内容总结
以上是互联网集市为您收集整理的具有类型混淆的自定义Java迭代器全部内容,希望文章能够帮你解决具有类型混淆的自定义Java迭代器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。