範例

public NullIterator_Example() {
super();
}

public void addValue( Integer value ) {
if ( values == null ) {
values = new ArrayList(10);
}
values.add( value );
}

public Iterator getValues() {
if ( values == null ) {
return null;
}
return values.iterator();
}

private List values;

public static void main( String[] args ) {
NullIterator_Example example = new NullIterator_Example();
for ( Iterator iter = example.getValues(); iter.hasNext(); ) {
System.out.println( iter.next() );
}
}

解決方案
傳回空白的 Iterator,而不是空值。

public NullIterator_Solution() {
super();
}

public void addValue( Integer value ) {
if ( values == null ) {
values = new ArrayList(10);
}
values.add( value );
}

public Iterator getValues() {
return ( values != null ) ? values.iterator() :
new Iterator() {
public boolean hasNext() {
return false;
}
public Object next() {
throw new UnsupportedOperationException();
}
public void remove() {
throw new UnsupportedOperationException();
}
};
}


private List values;

public static void main( String[] args ) {
NullIterator_Example example = new NullIterator_Example();
for ( Iterator iter = example.getValues(); iter.hasNext(); ) {
System.out.println( iter.next() );
}
}