foreach出来るジェネリクスを作ろう★

generics-foreach.png

私の言っているforeachとはコレのことである

for(String s: array){....}

サンプル

public class CircularArray<T> implements Iteratable<T>{
     ...
      public Iterator<T> iterator(){
             return new CircularArrayIterator<T>(this);
       }
      private class CircularArrayIterator<TI> implements<TI>{
         //currentは循環配列のheadの位置を反映し、生配列での先頭からの位置ではない
    private int _current = -1;
          private TI[] _items;
       public CircularArrayIterator(CircularArray<TI> array){
           _items = array.items;
        }
     @Override
     public boolean hasNext(){
          return _current < items.length -1;
     }
    @Override
     public TI next(){
         _current++;
        TI item = (TI) _items[convert(_current)];
         return item;
     }
    @Override
    public void remove(){
         throw new UnsupportedOperationException("....");
    }
      }
 
}

サポートサイト Wikidot.com