到底在哪些类中,调用next之前必须先调用hasnext啊

解决方案 »

  1.   

    看你这问题,像是不是被ResultSet 的 next() 和 Iterator 的 hasNext() 、 next() 搞糊涂了。
    一般会调用next方法的的都是迭代器类型的类,里面存储着一个列表,然后能挨个遍历出数据。一般这种数据结构的取值,操作上通常分为两步。第一步,检查是否有下一个值:如ResultSet 的 next()  、Iterator 的 hasNext() 、Enumeration的hasMoreElements() 等等。
        这些方法都有一个特别,返回布尔值来判断有无。
    第二步,取下一个值:ResultSet 的getString()等、Iterator 的 next()、Enumeration的 nextElement() 等等。
        这些方法返回Object的具体值。所以通常迭代器类型的结构调用next()之前,都要先调用hasNext() (注意,ResultSet 的判断方法是next(),只是命名上的差异,其实原理都一样。)ps: 当然,也有些地方的设计是直接调用返回值的方法,如果返回值为null表示遍历结束。