arraylist初始化错误

时间:2013-10-11 21:55:07

标签: java arraylist

我在初始化ArrayLists时遇到问题。

当我使用NetBeans 7.3时,我尝试这样做:

protected Stack<Scope> scopeStack;
protected ArrayList<Scope> allScopes;
scopeStack = new Stack<>();
allScopes = new ArrayList<>();

文件编译得很好,很好。

但是当我使用命令行切换到linux来编译java时。它给了我一个错误

src/SymbolTable.java:28: illegal start of type scopeStack = new Stack<>();      
SymbololTable.java:29: illegal start of type allScopes = new ArrayList<>();

这是由不同版本的java编译器引起的吗?或者造成这种情况的原因是什么?

3 个答案:

答案 0 :(得分:10)

我猜想在Netbeans中你使用的是Java 1.7,而在Linux上你使用的是Java 1.6。

“钻石操作员”仅在Java 7中引入。

使用javac -version查看正在运行的编译器版本。

答案 1 :(得分:2)

如果使用Java 6,则需要在初始化时定义类型,如下所示:

scopeStack = new Stack<Scope>();
allScopes = new ArrayList<Scope>();

答案 2 :(得分:0)

您应在new来电中指定收藏类型,并在适当的位置初始化字段。尝试:

初始化内联字段

protected Stack<Scope> scopeStack = new Stack<Scope>();
protected ArrayList<Scope> allScopes = new ArrayList<Scope>();

初始化构造函数中的字段

public class MyClass {
  protected Stack<Scope> scopeStack;
  protected ArrayList<Scope> allScopes;

  public MyClass() {
    scopeStack = new Stack<Scope>();
    allScopes = new ArrayList<Scope>();
  }
}