- PR -

static finalな配列

1
投稿者投稿内容
ゆう
常連さん
会議室デビュー日: 2001/12/10
投稿数: 33
投稿日時: 2005-06-11 19:28
現在javaでとあるルールチェック
→簡単に言うとパラメータがA or B or CならOKみたいなものです。
そこで下のようにstatic finalな配列変数を定義したのですが、
正常に動作はしますが、javaの配列は定数にできないというようなことを聞き、
またJTESTでチェックすると静的エラーになってしまいます。
上記のように配列を定数にしたい場合はどのようにすればよいのでしょうか?
ListやMapでも良いのですが、どれもしっくりこないので、どなたか教えてください。

private static final String[] = {"A", "B", "C"};
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-11 19:38
public static final String[] str = new String[]{"a","b"};
こんな感じで問題ないですが。

配列型の変数は定数ですが、配列の要素までは定数とはなりません。
ですので、
str[0] = "hoge";
等と、変更する事が可能です。

JavaでのエラーとJTESTで発生しているエラーはエラーの概念が違います。
コンパイラがエラーを出さなければ、作ったように動くので
JTESTのエラーをどう捉えるかは、ゆうさんの判断になると思います。
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2005-06-12 14:08
引用:

ゆうさんの書き込み (2005-06-11 19:28) より:
現在javaでとあるルールチェック
→簡単に言うとパラメータがA or B or CならOKみたいなものです。
そこで下のようにstatic finalな配列変数を定義したのですが、
正常に動作はしますが、javaの配列は定数にできないというようなことを聞き、

private static final String[] = {"A", "B", "C"};



Listはしっくりこないとのことですが、以下のような方法でどうでしょうか。
(絶対変更できないCONST_LIST)
コード:

import java.util.*;
class ConstantArrayDemo1 {
public static final List<String> CONST_LIST = Collections.unmodifiableList(Arrays.asList(new String[]{"A", "B", "C"}));
public static void main(String[] args) {
System.out.printf("%s%n", CONST_LIST.get(2));
CONST_LIST.set(1, "b");
}
}


あるいはenumを使った方がよいかもしれません


[ メッセージ編集済み 編集者: kito 編集日時 2005-06-12 14:42 ]
1

スキルアップ/キャリアアップ(JOB@IT)