我有以下课程:
public abstract class MapObjects<MapleMapObject> {
private Map map;
private HashMap<Integer, MapleMapObject> objects;
public MapObjects(Map map) {
this.map = map;
this.objects = new HashMap<>();
}
public void add(MapleMapObject object) {
objects.put(map.getObjectId(), object);
onAdd();
}
public void remove(MapleMapObject object) {
onRemove();
objects.remove(object.getObjectId());
}
protected abstract void onAdd();
protected abstract void onRemove();
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个迭代器,以便我可以迭代从这个类扩展的类.例如,如果我有一个名为的类MapCharacters extends MapObjects<Character>,我希望能够执行以下操作:
characters = new MapCharacters(this);
for (Character character : characters)
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
如果您只想迭代objectsmap,可以调用values()它,然后从该值集创建一个迭代器:
public abstract class MapObjects<MapleMapObject> implements Iterable<MapleMapObject> {
...
@Override public Iterator<MapleMapObject> iterator() {
return objects.values().iterator();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |