LANG-454 implement Iterable<Character> and some javadoc changes

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@906028 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Niall Pemberton 2010-02-03 12:22:27 +00:00
parent 63ad5b063e
commit c98d0840bc
1 changed files with 17 additions and 6 deletions

View File

@ -31,7 +31,7 @@
* @since 1.0
* @version $Id$
*/
public final class CharRange implements Serializable {
public final class CharRange implements Iterable<Character>, Serializable {
/**
* Required for serialization support. Lang version 2.0.
@ -251,18 +251,26 @@ public String toString() {
*
* @return an iterator to the chars represented by this range
*/
public Iterator iterator() {
public Iterator<Character> iterator() {
return new CharacterIterator(this);
}
static class CharacterIterator implements Iterator {
/** The currect character */
/**
* Character {@link Iterator}.
*/
private static class CharacterIterator implements Iterator<Character> {
/** The current character */
private char current;
private CharRange range;
private boolean hasNext;
public CharacterIterator(CharRange r) {
/**
* Construct a new iterator for the character range.
*
* @param r The character range
*/
private CharacterIterator(CharRange r) {
range = r;
hasNext = true;
@ -282,6 +290,9 @@ public CharacterIterator(CharRange r) {
}
}
/**
* Prepare the next character in the range.
*/
private void prepareNext() {
if (range.negated) {
if (current == Character.MAX_VALUE) {
@ -316,7 +327,7 @@ public boolean hasNext() {
*
* @return <code>Character</code> for the next character
*/
public Object next() {
public Character next() {
if (hasNext == false) {
throw new NoSuchElementException();
}