Codelogy

« 2009年11月 | メイン | 2010年02月 »

2009年12月 アーカイブ

2009年12月04日

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 が「配列のサイズは変更できない」という仕様を有するが故に可能なものであるということに読者諸兄はお気づきでしょうか。 もし配列のサイズが初期化後に変更可能であるとすれば、lengthfinal 修飾することはできません。 そうなると、length に対する代入操作を禁止する手立てはなくなってしまうのです。

一方、C++ ならば、値の変更が可能かつ、外部からの変更が不能なメンバ変数 (を模したインターフェイス) を定義することが可能です。 このエントリでは、このテクニックを使い、これまでのエントリで作成してきた Array クラステンプレート (参照) に要素数読み取り専用のメンバ変数 size を定義します。

About 2009年12月

2009年12月にブログ "Codelogy" に投稿されたすべてのエントリーです。 過去のものから新しいものへ順番に並んでいます。

Prev: 2009年11月
Next: 2010年02月

メインページアーカイブページもご覧ください。