Java can';我们不能定义包含该变量所在类的变量吗?

Java can';我们不能定义包含该变量所在类的变量吗?,java,Java,代码如下: 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

代码如下:

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=新的Final(计数)我从此行中得到错误。(
不是一个声明;除外
)。我们不能定义包含该变量的类的变量吗?

final
是一个,这意味着您不能根据将其用作变量名

因此,您只需更改名称:

Final myFinal = new Final(count);
final
是一个,这意味着您不能根据将其用作变量名

因此,您只需更改名称:

Final myFinal = new Final(count);

final
是一个关键字

java将其解释为:

[type] [modifier]=new [type]()
这缺少变量名,因此无效

从:

字段声明:
FieldModifiers[opt]类型变量声明器

我们将
final
作为字段修饰符。我们现在需要一个类型和一个声明器。这与您提供的内容不一致,您提供的内容被解析为
Type FieldModifiers
。解析未生成有效的表达式


此外,根据JLS第3.9节,final是一个关键字,可能不是一个标识符,即使它是明确的。

final
是一个关键字

java将其解释为:

[type] [modifier]=new [type]()
这缺少变量名,因此无效

从:

字段声明:
FieldModifiers[opt]类型变量声明器

我们将
final
作为字段修饰符。我们现在需要一个类型和一个声明器。这与您提供的内容不一致,您提供的内容被解析为
Type FieldModifiers
。解析未生成有效的表达式

此外,根据JLS第3.9节,final是一个关键字,可能不是标识符,即使它是明确的。

final
是一个,不能用作标识符

:

标识符不能与关键字(§3.9)、布尔文字(§3.10.3)或空文字(§3.10.7)具有相同的拼写(Unicode字符序列),否则会发生编译时错误

final
是一个,不能用作标识符

:

标识符不能与关键字(§3.9)、布尔文字(§3.10.3)或空文字(§3.10.7)具有相同的拼写(Unicode字符序列),否则会发生编译时错误


您的问题源于上一个方法使用final作为变量名

public void generate(int count)
{
    Final final = new Final(count);
}

现在这不是一个问题,除非它是小写,使其成为关键字final,这是一个问题,因为final使一个变量一旦生成就不可更改。避免这种情况的最好方法是避免使用关键字或将它们全部大写,以告诉编译器这不是关键字。

您的问题源于上一种方法,即使用final作为变量名

public void generate(int count)
{
    Final final = new Final(count);
}

现在这不是一个问题,除非它是小写,使其成为关键字final,这是一个问题,因为final使一个变量一旦生成就不可更改。避免这种情况的最好方法是避免使用关键字或将它们全部大写,以告诉编译器这不是关键字。

为什么要声明一个名为“final”的变量?为什么要声明一个名为“final”的变量?好的,但我想finalize()函数不运行?原因可能是什么?@Yusuf是你首先修复变量名的吗<代码>最终确定(
有特殊的含义。说这一行将如何解释是没有意义的。根据JLS§3.9,它是无效的。@Hexafrance GC可能调用,取决于JVM实现!@TheNewIdiot是的。我的错。OP:永远,永远,永远,永远依赖于
finalize
。可能无法保证,而且在所有方面都是个坏主意。好吧,但我想finalize()函数没有运行?原因是什么?@Yusuf您首先修复了变量名吗?
finalize(
有特殊的含义。说这一行将如何解释是没有意义的。根据JLS§3.9,它是无效的。@Hexafrance GC可能调用,取决于JVM实现!@TheNewIdiot Yes。My bad。OP:永远,永远,永远,永远依赖于
finalize
。可能无法做出任何保证,这在各个方面都是一个坏主意。