改进不同类型的Iterable <t>的类型检查

时间:2019-03-07 05:29:31

标签: java generics

看起来像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);
  }

0 个答案:

没有答案