私の歴史と今

振り返ると恥ずかしくなるのが私の歴史。だけどそのときは真面目に書いていた訳でね。そんな今の私を書いていく。

Javaの配列リテラルは宣言時にしか使えないのか!

知らなかった。下記のコードはOKだと思ってた。

int[] i;
i = {1,2,3}; // コンパイルエラー

正しくは無名配列を使う。

int[] i;
i = new int[]{1,2,3};

SJC-Pの試験対策で配列の勉強をしていた時、説明に違和感を感じていたんだよなー。多分、このことに気づいていなかったんだなー。でも、なぜできないんだ? もしかして、配列の型がわからないからか?

int[] i;
i = {1,2,3}; // この{}の型を決められないから?(short[]の場合もあるし)

宣言時の場合は、{}の型は自ずと決まる(変数の型と同じ)。

int[] i = {1,2,3}; // この{}の型は、当然int[]だからOKってこと?

そういう理解にしておこう。
あ、そういうことか。JavaScriptは変数に型がないからOKなのかな。

var a1 = {1,2,3,4,5}; // OK
var a2;
a2 = {1,2,3,4,5};     // OK(しかも配列リテラルからはArrayオブジェクトしか生成されない)

なるほどー。