とかいいつつ、くだらない話を書いてみる。
配列をfor文でループカウンタの参照をしながら
トラバースするコードは個人的にあまり好きではない。
まぁこんなミスは一般的にはしないと思うけど
配列のindexに負の値や配列要素数を超えた値を渡すことで
実行時エラーが発生するからだ。
昔の現場で同じ主義者がいた(?)んですが
配列をわざわざLinkedListのコンストラクタに渡した後に
イテレータを生成してトラバースしている人がいた。
それはいかんだろって思って書いたのがこんな感じのコード。
同じ理由からJExcelAPIでcellやrowのindexを渡す実装は個人的にとても気に入らないわけです(^^;;;;
package com.wikihouse.wildcats0201;/**
* @author wildcats
*/
public class ArrayImpl implements Array {private final Object[] objects;
/**
* @deprecated
*/
private ArrayImpl() {
this.objects = null;
}/**
* @param objects
* @pre objects != null
*/
public ArrayImpl(Object[] objects) {
this.objects = (Object[]) Util.deepCopy(objects);
}/**
* @see com.wikiroom.wildcats.Array#iterator()
*/
public Iterator iterator() {
return new ArrayIterator();
}private class ArrayIterator implements Iterator {
private int cursor;
/**
* @see java.util.Iterator#remove()
*/
public void remove() {
throw new UnsupportedOperationException();
}/**
* @see java.util.Iterator#hasNext()
*/
public boolean hasNext() {
return objects.length > cursor;
}/**
* @see java.util.Iterator#next()
*/
public Object next() {
Object object = objects[cursor];
cursor++;
return object;
}
}
で。。。それに対応してみたんですが公開する価値があるかどうか(汗)