0

私はArrayList自分のクラスを持っていCaseます。クラス case は、getCaseNumber()すべてのケース casenumber を に追加するメソッドを提供しますString[] caseNumber。私はこれを試しました

public String[] getCaseNumberToTempList(ArrayList<Case> caseList) {

    String[] objectCaseNumber = null; 

    for(int i = 0; i < caseList.size(); i++) {
        objectCaseNumber[i] = caseList.get(i).getCaseNumber();  
    }

    return objectCaseNumber;

}

objectCaseNumberしかし、私のコンパイラは、 for ループ内の時点で が null であることに不満を持っています。どうすればこれを完了することができますか?

4

3 に答える 3

3

まず、配列を作成し、配列への参照を使用して変数を初期化する必要があります。(詳細については、配列の Java チュートリアルを参照してください。) 例:

String[] objectCaseNumber = new String[caseList.size()]; 

List<String>または、代わりに(たとえば を使用して) をビルドしArrayListます。これはより柔軟です。この場合はサイズが事前にわかっているので簡単ですが、リストに追加するだけで作業がずっと簡単になる場合もあります。

于 2012-07-25T08:02:33.280 に答える
3
  1. ArrayList慣用的な Java では、パラメーターの型として使用しません。を使用しListます。
  2. オーバーヘッドはわずかに増えますが、よりシンプルで読みやすいコードは、別のコードに蓄積してからList配列に変換することです。

public String[] getCaseNumberToTempList(List<Case> caseList) {
  final List<String> r = new ArrayList<String>();
  for (Case c : caseList) r.add(c.getCaseNumber());
  return r.toArray(new Case[0]);
}

ArrayListあなたのコードでは、を介したランダム アクセスのパフォーマンスへの影響により、を主張することは理にかなっていgetますが、この種のコードを使用する場合 (習慣化することをお勧めします)、List同じ結果で任意のコードを使用できます。

于 2012-07-25T08:07:45.853 に答える
0

さて、あなたは配列をプリミティブ型と誤解しているかもしれません。Java の配列はオブジェクトであり、アクセスする前に初期化する必要があります。

于 2012-07-25T08:08:20.837 に答える