【初心者】Java質問・相談スレッド61【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0202デフォルトの名無しさん
05/02/02 10:33:17>配列のサイズは0でいい
と書かれると、List#size()を指定することが余計なように聞こえるんだけど、
別に「List#size()で指定する」よりも、「0で指定するほうが良い」というわけではないと思うんだけど。
今回のケースだと、List#size()を指定したほうが余計なインスタンスが生成されないと思う。
List#size()を指定する方は、自分でサイズ指定して作った配列に格納されて返ってくる。
0個の配列を作った場合は、型の判別だけに使用され、
toArrayの内部で(前者と同じように)Listの要素数に等しい配列が生成されるわけだ。
となると、0個の配列をnewしたことが無駄なインスタンス生成になるのではないでしょうか?
サイズを0で指定するんだったら、型指定のための定数として使うべき。
ClassA[] clA = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clB = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clC = (ClassA[]) AL.toArray(new ClassA[0]);
↓
private static final ClassA[] NULL_CLASSA_ARRAY = new ClassA[0];
ClassA[] clA = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clB = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clC = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
「サイズ0の配列を渡せばよい」というと、ソース上のあっちこっちで
new HogeHoge[0]というのが記述されることになっちゃわないかと心配。
どうせ0個の配列を生成するコストなんてたいしたことないのかな?
要素数0の配列で指定した場合の利点ってなんなんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています