我尝试编写一个小程序,但无法编译。 Eclipse在最后一行显示以下错误:


令牌上的语法错误,未正确放置
 结构体)
令牌“ 200000”上的语法错误,已删除
 这个令牌

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

最佳答案

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


您可能会觉得该代码是按顺序执行的(从上到下),但事实并非如此。您正在做的是创建一个名为booksDB的私有实例字段,每个Books实例都将携带该实例字段。

最有可能的是,您希望该代码进入Books构造函数(每当创建newBooks实例时都会调用该构造函数。请尝试以下操作:

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.
    }
}

09-11 18:54