2012-04-27 11 views
0

は、私はこのようなこのようなオブジェクトを実行していると仮定すると:オブジェクト内のarraylistの適切な初期化?

static class fileHandler { 
    File fileToHandle; 
    ArrayList fileDetails; 

    fileHandler(File fileIn) { 
     fileToHandle = fileIn; 
    } 


    public void fileHandling() { 

     try { 
      Scanner reader = new Scanner(fileToHandle); 
      reader.useDelimiter(","); 
      while(reader.hasNext()) { 
       String s = reader.next(); 
       fileDetails.add(s); 
      } 
     } catch (FileNotFoundException e) { System.err.println("File Not Found!"); } 
    } 
} 

私は私のメソッドの内部で動作するように「fileDetails」はでき作ることができますどのように?

+0

メソッド内にfileDetails型の新しいオブジェクトをインスタンス化するだけです。 'fileDetails = new ArrayList ();' – noMAD

+0

具体的なクラスから 'fileDetails'を参照する特定の理由がない限り、代わりに' List'を参照するほうがずっと良いことに注意してください。プログラムの柔軟性を向上させます。 – Kirstein

答えて

2

あなたのコンストラクタで定義に関する

fileHandler(File fileIn) { 
    fileToHandle = fileIn; 
    fileDetails = new ArrayList(); 
} 

または右にそれを初期化します。

ArrayList fileDetails = new ArrayList(); 

あなたは、一般的なArrayListを使うべきところで:名前が開始する必要があり

ArrayList<String> fileDetails = new ArrayList<String>(); 

とクラスを大文字で

class FileHandler { 
+0

また、クラスフィールド 'final'を宣言し、ゲッターを使ってそれらにアクセスします。 –

+0

'final'の代わりに' private'を生成するようにしました – Kirstein

+0

@Kirstein私は 'private final'あなたが正しいです;) –

関連する問題