Array クラスを作る (size フィールド編)
Java では、配列の要素数をフィールド length を通じて参照することができます。
//合計の取得
int sum(int[] anData){
int nSum =0;
int i;
for (i=0; i<anData.length; ++i){
nSum +=anData[i];
} //i
return nSum;
} |
この length は (おそらく) final int、即ち、変更不能な public フィールドとして定義されており、これに対する代入操作を行おうとすると、コンパイルエラーとなります。
ところで、この仕組みは Java が「配列のサイズは変更できない」という仕様を有するが故に可能なものであるということに読者諸兄はお気づきでしょうか。
もし配列のサイズが初期化後に変更可能であるとすれば、length を final 修飾することはできません。
そうなると、length に対する代入操作を禁止する手立てはなくなってしまうのです。
一方、C++ ならば、値の変更が可能かつ、外部からの変更が不能なメンバ変数 (を模したインターフェイス) を定義することが可能です。
このエントリでは、このテクニックを使い、これまでのエントリで作成してきた Array クラステンプレート (
