Java arraylist初始化错误

Java arraylist初始化错误,java,arraylist,Java,Arraylist,我在初始化ArrayList时遇到问题 当我使用NetBeans 7.3时,我尝试这样做: protected Stack<Scope> scopeStack; protected ArrayList<Scope> allScopes; scopeStack = new Stack<>(); allScopes = new ArrayList<>(); 受保护的堆栈范围堆栈; 受保护的ArrayList allScopes; scopeStack

我在初始化ArrayList时遇到问题

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

protected Stack<Scope> scopeStack;
protected ArrayList<Scope> allScopes;
scopeStack = new Stack<>();
allScopes = new ArrayList<>();
受保护的堆栈范围堆栈;
受保护的ArrayList allScopes;
scopeStack=新堆栈();
allScopes=newArrayList();
该文件经过完美编译,运行正常

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

src/SymbolTable.java:28: illegal start of type scopeStack = new Stack<>();      
SymbololTable.java:29: illegal start of type allScopes = new ArrayList<>();
src/SymbolTable.java:28:scopeStack=new Stack()类型的非法启动;
java:29:类型allScopes=new ArrayList()的非法启动;

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

您应该在
new
调用中指定集合的类型,并在适当的位置初始化字段。尝试以下任一方法:

初始化内联字段

protected Stack<Scope> scopeStack = new Stack<Scope>();
protected ArrayList<Scope> allScopes = new ArrayList<Scope>();
protectedstack scopeStack=newstack();
受保护的ArrayList allScopes=新ArrayList();
初始化构造函数中的字段

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

  public MyClass() {
    scopeStack = new Stack<Scope>();
    allScopes = new ArrayList<Scope>();
  }
}
公共类MyClass{
受保护堆栈范围堆栈;
受保护的ArrayList allScopes;
公共MyClass(){
scopeStack=新堆栈();
allScopes=newArrayList();
}
}

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

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

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

“菱形操作符”仅在Java7中引入


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

这是一个Java 1.7与1.6的错误——1.6没有“菱形”泛型类型推断语法。我认为您是对的。这就是版本错误。谢谢在java 7中,如果可以推断出泛型类型,则“diamond”泛型类型推断运算符应该避免指定泛型类型。他的问题是,他在Linux编译器上使用的是Java 6(或Java 6输出兼容性),但失败了。@ThomasW首先,我们不知道他在使用Java 7,如果他没有,那么他将不得不推断出来。我不明白投反对票的原因。如果他要从Java7到Java6,那么他必须指定类型。。。我认为这不应该是一个否决票,我认为,从Java7的特定语法来看,他使用的是Java7(在运行的盒子上)。关于这种新语法的讨论,请参见和。布莱恩:像你这样的反应就是为什么这么多人从不在投票不通过时留下评论/cc@ThomasWSorry为混乱感到抱歉。一开始,我不确定linux和我的电脑的版本是否不同。所以我没有暗示。无论如何,谢谢大家的回答!!与他的问题无关,新的Java 7菱形语法不正确。不过,我同意在声明或构造函数中初始化。