为了账号安全,请及时绑定邮箱和手机立即绑定

Iterator<Course> it = coursesToSelect.iterator();

这个语句中的it是什么呢?是iterator的对象吗?iterator是一个接口,为什么能够声明it呢?

正在回答

3 回答

对于集合来说,接口中的方法都是内部实现的,你可以查看AbstractList<E>中有相关声明

 public Iterator<E> iterator() {

        return new Itr();

    }

 private class Itr implements Iterator<E> {

        /**

         * Index of element to be returned by subsequent call to next.

         */

        int cursor = 0;


        /**

         * Index of element returned by most recent call to next or

         * previous.  Reset to -1 if this element is deleted by a call

         * to remove.

         */

        int lastRet = -1;


        /**

         * The modCount value that the iterator believes that the backing

         * List should have.  If this expectation is violated, the iterator

         * has detected concurrent modification.

         */

        int expectedModCount = modCount;


        public boolean hasNext() {

            return cursor != size();

        }


        public E next() {

            checkForComodification();

            try {

                int i = cursor;

                E next = get(i);

                lastRet = i;

                cursor = i + 1;

                return next;

            } catch (IndexOutOfBoundsException e) {

                checkForComodification();

                throw new NoSuchElementException();

            }

        }


        public void remove() {

            if (lastRet < 0)

                throw new IllegalStateException();

            checkForComodification();


            try {

                AbstractList.this.remove(lastRet);

                if (lastRet < cursor)

                    cursor--;

                lastRet = -1;

                expectedModCount = modCount;

            } catch (IndexOutOfBoundsException e) {

                throw new ConcurrentModificationException();

            }

        }


        final void checkForComodification() {

            if (modCount != expectedModCount)

                throw new ConcurrentModificationException();

        }

    }

简单来说,就是集合内部实现Iterator接口的方法,私有的

0 回复 有任何疑惑可以回复我~

coursesToSelect.iterator();?

 

0 回复 有任何疑惑可以回复我~

是的。一样可以对象的

0 回复 有任何疑惑可以回复我~
#1

六代目 提问者

能具体解释一下吗
2015-06-15 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Iterator<Course> it = coursesToSelect.iterator();

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信