Поскольку для получения значения вам по-прежнему потребуется другая функция, то ничего не будет получено.
В ResultSet метод next () возвращает вас к следующей записи или возвращает false, если ее нет.Затем вы делаете getString (), getInt () или что-то еще, чтобы получить значения полей.Таким образом, вы пишете код вроде:
while (rs.next())
{
name=rs.getString("name"); // or whatever
... do something with name ...
}
В Итераторе hasNext () возвращает true или false, чтобы указать, есть ли другая запись.Затем вы вызываете next (), чтобы получить значение.поэтому вы пишете код вроде:
while (iter.hasnext())
{
name=iter.next(); // or whatever
... do something with name ...
}
Шаблон в конечном итоге очень похож.К сожалению, реализации противоречивы.То есть ResultSet.next не только сообщает вам, если вы находитесь в конце, но также продвигает позицию, в то время как Iterator.hasNext сообщает вам, если вы находитесь в конце, но не продвигает позицию.Но фактическое использование очень похоже.
На самом деле не стоит пытаться объединить Iterator.hasNext и Iterator.next в одну функцию.Как бы вы узнали, когда достигли конца?Вы могли бы сказать, что он возвращает ноль в конце ... но что, если нуль является допустимым значением в списке?Я полагаю, вы могли бы добавить какое-то магическое значение, но у вас все еще будет проблема отличить магическое значение от записи в списке, которая, как оказалось, имеет это значение.Например, если у вас есть список целых чисел, вы можете сказать, что -1 означает конец списка, но что, если список содержит значение -1?
Единственная другая альтернатива, которую я вижу, - это иметьфункция next () возвращает объект, который включает в себя как указание конца списка, так и, если применимо, значение.Но это было бы болезненно для использования.Вы должны написать что-то вроде:
while (true)
{
IterableResult ir=iter.next();
if (ir.end)
{
break;
}
else
{
name=ir.value;
... do something with name ...
}
}
Это, кажется, ничего не дает.
Может быть, есть другой подход, который будет работать лучше, но я не могу придумать один,И, видимо, создатели интерфейса Iterator также не могли придумать лучшего способа!: -)