代码如下:
public class Final {
int x;
Final(int i)
{
x = i;
}
protected void finalize()
{
System.out.println("Final of the class!" + this.x);
}
public void generate(int count)
{
Final final = new Final(count);
}
}
看看Final final = new Final(count);
我从这一行得到的错误。 (not a statement ; excepted
)。我们不能定义包含变量里面的变量的变量吗?
答案 0 :(得分:6)
答案 1 :(得分:6)
final
是一个关键字。
java会将其解释为:
[type] [modifier]=new [type]()
这缺少变量名称并且无效。
来自JLS:
FieldDeclaration:
FieldModifiers [opt] 类型VariableDeclarators;
我们将final
作为FieldModifier。我们现在需要一个类型和一个声明器。这与您给出的内容不一致,后者被解析为Type FieldModifiers
。解析不会产生有效的表达式。
同样根据JLS第3.9节final
是一个关键字,可能不是标识符,即使它是明确的。
答案 2 :(得分:4)
final
是keyword,不能用作标识符。
标识符不能与关键字(§3.9),布尔文字(§3.10.3)或空文字(§3.10.7)具有相同的拼写(Unicode字符序列),否则会发生编译时错误
答案 3 :(得分:0)
你的问题源于你的上一个方法是使用final作为你的变量名
public void generate(int count)
{
Final final = new Final(count);
}
现在这不是一个问题,除非它是小写,使得它成为关键字final这是问题,因为final使得一次变量不可变。避免这种情况的最好方法是避免关键字或使它们全部大写,以告诉编译器这不是关键字。