我在初始化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编译器引起的吗?或者造成这种情况的原因是什么?
发布于 2013-10-12 05:59:23
我猜测您在Netbeans中使用的是Java 1.7,在Linux上使用的是Java 1.6。
“菱形运算符”只是在Java7中引入的。
使用javac -version查看您正在运行的编译器的版本。
发布于 2013-10-12 05:59:15
如果您使用的是Java 6,则需要在初始化时定义类型,如下所示:
scopeStack = new Stack<Scope>();
allScopes = new ArrayList<Scope>();发布于 2013-10-12 05:58:56
您应该在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>();
}
}https://stackoverflow.com/questions/19327860
复制相似问题