0

小さなプログラムを書いてみましたが、コンパイルできません。Eclipse の最終行に次のエラーが表示されます。

  • トークンの構文エラー、構造体の配置ミス
  • トークン "200000" の構文エラーです。このトークンを削除してください

    import java.util.ArrayList;
    public class Books{
      ArrayList<String> booksDB = new ArrayList<String>();
      booksDB.ensureCapacity(200000);        //Compilation Errors
    }
    
4

4 に答える 4

1
public class Books{
  ArrayList<String> booksDB = new ArrayList<String>();
  booksDB.ensureCapacity(200000);        //Compilation Errors
}

このコードが (上から下へ) 順次実行されているという印象を受けるかもしれませんが、そうではありません。あなたがしているのは、のbooksDBすべてのインスタンスBooksが運ぶという名前のプライベート インスタンス フィールドを作成することです。

newほとんどの場合、そのコードを Books コンストラクター (のインスタンスが作成されるたびに呼び出されます) に入れたいと思いますBooks。次のことを試してください。

public class Books {
    private ArrayList<String> booksDB;  // this is a field of the Books class

    // when we create a new Books instance, we will initialize the booksDB field
    public Books() {
        booksDB = new ArrayList<String>();
        booksDB.ensureCapacity(20000);
    }
}

次に、次のように使用します。

public class Main {
    public static void main(String[] args) {
        Books b = new Books(); // the Books object is constructed, and its private field booksDB is initialized as we specified.
    }
}
于 2013-05-31T23:30:45.967 に答える
1

以下のような初期容量を受け入れる ArrayList のコンストラクターを使用できます

import java.util.ArrayList;
public class Books{
   ArrayList<String> booksDB = new ArrayList<String>(200000);
}
于 2013-05-31T23:36:14.843 に答える
1

宣言とインポートを除いて、Java のすべてのコードはメソッド内 (または、以下で説明するように、本質的にメソッドでもあるイニシャライザー内) に存在する必要があります。

import java.util.ArrayList;
public class Books {
    ArrayList<String> booksDB = new ArrayList<String>();
    public void doSomething() {
        booksDB.ensureCapacity(200000);        //Compilation Errors
    }
}

オブジェクトの内容を初期化しているように見えるので、その行をコンストラクターに入れたいと思うかもしれません。これは、新しく作成されたオブジェクトで自動的に実行されるメソッドです。

import java.util.ArrayList;
public class Books {
    ArrayList<String> booksDB = new ArrayList<String>();
    public Books() {
        booksDB.ensureCapacity(200000);        //Compilation Errors
    }
}
于 2013-05-31T23:25:11.213 に答える
0

メソッドからのみ変数 ( booksDB ) にアクセスします。それはあなたがしなければならないすべてです。

于 2013-05-31T23:27:49.663 に答える