看起来像List,Set,Queue都在Java中实现Iterable。我有处理每个类型的烦人的逻辑。其中一种特殊情况是Set,其中我将每个条目的键/值作为单独的args传递。
if (i instanceof Set) {
if (v instanceof Map.Entry) {
((IEacherWithTypedIndex) m).each(((Map.Entry) v).getValue(), ((Map.Entry) v).getKey(), taskRunner);
} else {
((IEacherWithTypedIndex) m).each(v, v, taskRunner);
}
} else if (i instanceof List) {
((IEacherWithTypedIndex) m).each(v, val, taskRunner);
} else if (i instanceof Queue) {
((IEacherWithTypedIndex) m).each(v, v, taskRunner);
} else {
((IEacherWithTypedIndex) m).each(v, val, taskRunner);
}
有什么办法可以减少这种逻辑?除了列表,设置,队列之外,我还有什么要处理的?
相关接口为:
public interface IEacherWithTypedIndex<T, V, E> extends IEach {
void each(T v, V i, IEachCallback<E> cb);
}
public interface IEachCallback<E> {
void done(E e);
}